Cursor + MCP's | Docker | Strapi v5 | Next JS | Render

๋ฐœํ–‰: (2025๋…„ 12์›” 13์ผ ์˜ค์ „ 07:29 GMT+9)
6 ๋ถ„ ์†Œ์š”
์›๋ฌธ: Dev.to

Source: Dev.to

Overview

๐Ÿš€ ์˜ค๋Š˜ ์ œ ๋ชฉํ‘œ๋Š” ํฌํŠธํด๋ฆฌ์˜ค ์›น์‚ฌ์ดํŠธ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ด๋‹นํ•  Strapi CMS๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์„œ, ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Docker ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

Using Render

โ˜๏ธ ์ €๋Š” Render๋ผ๋Š” ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. Render๋Š” GitHub ์ €์žฅ์†Œ์—์„œ ์ง์ ‘ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ๊ณผ ํ”„๋กœ๋•์…˜์—์„œ ์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฒ„์ „์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คโ€”์ œ ๊ฒฝ์šฐ๋Š” Strapiโ€ฏv5์™€ PostgreSQLโ€ฏ16์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ ํ™”์žฅ์‹ค์— ์•‰์•„ xAi์˜ Grok๊ณผ ๋ช‡ ์ฐจ๋ก€ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆˆ ๋’ค, Render ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด Render๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์„œ๋ฒ„ ๊ตฌ์กฐ๋ฅผ ๊น”๋”ํ•˜๊ณ  ์กฐ์ง์ ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Dockerfile๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ Render ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, GitHub์—์„œ ์ง์ ‘ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฒญ์‚ฌ์ง„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

Generating the Strapi Project with Cursor

โš™๏ธ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ดํ•ดํ•œ ๋’ค, ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์ œ ์ข‹์€ ์นœ๊ตฌ Cursor์—๊ฒŒ Docker ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์ „์ฒด Strapiโ€ฏv5 ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค. Opusโ€ฏ4.5๋ฅผ ์‚ฌ์šฉํ•ด Cursor๋Š” ๋ช‡ ์ดˆ ๋งŒ์— ์ „์ฒด ์Šค์บํด๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ , ์ˆ˜๋™ ๊ฒ€์ƒ‰์€ ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ณ  Google์„ ํ•œ ๋ฒˆ๋„ ์—ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Debugging and Deployment

๐Ÿณ Cursor๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๋’ค, ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๊ณ  Docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ํ”„๋กฌํ”„ํŠธ์™€ ์กฐ์ •์œผ๋กœ 10๋ถ„๋„ ์•ˆ ๋˜์–ด Dockerfile๊ณผ Render ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํฌํ•จ๋œ ์™„์ „ํ•œ Strapiโ€ฏv5 ์„ค์ •์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š Pro tip: ๊ธฐ์ˆ  ์Šคํƒ ๋ฌธ์„œ๋ฅผ Cursor์— ๊ฐ€์ ธ์™€์„œ ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜์„ธ์š” (Render ๋ฌธ์„œ, Strapiโ€ฏv5 ๋ฌธ์„œ ๋“ฑ). ๋ชจ๋“  ๊ฒƒ์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.

๐Ÿ“ฆ ๋กœ์ปฌ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•œ ๋’ค, ์ฒญ์‚ฌ์ง„์„ Render์— ์—…๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ๊ฐ€ ์‹œ์ž‘๋˜๋ฉด์„œ ๋ช‡ ๊ฐ€์ง€ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต์€ ๋กœ๊ทธ๋ฅผ ์ˆ˜๋™์œผ๋กœ Cursor์— ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, Render๋Š” MCP ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•ด ์ง์ ‘ Cursor์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cursor๊ฐ€ ๋ฐฐํฌ ๋กœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์™€ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿคฏ ์•„์ฃผ ์ž˜ ์ž‘๋™ํ–ˆ๊ณ , ๋ช‡ ๋ฒˆ์˜ ํ”„๋กฌํ”„ํŠธ๋งŒ์œผ๋กœ ํ”„๋กœ๋•์…˜ Dockerfile์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MCP ์„œ๋ฒ„๋Š” ์ •๋ง ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์œ„ํ—˜ ์š”์†Œ๊ฐ€ ์•ฝ๊ฐ„ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ํ˜„์žฌ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์ง€ ์•Š์œผ๋‹ˆ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

Integrating with Next.js

๐Ÿงฑ Render๊ฐ€ ์ œ Strapiโ€ฏv5 CMS๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ๋ณธ๊ฒฉ์ ์ธ ์ž‘์—…์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—”ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ธฐ์กด Nextโ€ฏJS ํฌํŠธํด๋ฆฌ์˜ค์™€ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์ดํŠธ ๊ตฌ์กฐ(ํ”„๋กœ์ ํŠธ, ์ง๋ฌด, ๊ธฐ์ˆ  ์Šคํƒ, About ๋ฐ Home ๊ฐ™์€ ๋‹จ์ผ ํŽ˜์ด์ง€)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”Œ ๊ทธ ๋‹ค์Œ ์ƒˆ๋กœ์šด ๊ณผ์ œ๊ฐ€ ์ฐพ์•„์™”์Šต๋‹ˆ๋‹ค: ํฌํŠธํด๋ฆฌ์˜ค์šฉ API ํ†ตํ•ฉ ๊ตฌ์ถ•. ๋ชจ๋“  ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋กœ์ปฌ Strapi ์ธ์Šคํ„ด์Šค์— ์„ค์น˜ํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” Strapiโ€ฏv5 MCP ์„œ๋ฒ„๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์„œ๋ฒ„๋Š” localhost์—์„œ ๋™์ž‘ํ•˜๋ฉฐ Cursor์—๊ฒŒ API ํ†ตํ•ฉ์„ ๊ตฌ์ถ•ํ•  ์ „์ฒด ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿง  ์ด๋ฅผ ํ†ตํ•ด ํฌํŠธํด๋ฆฌ์˜ค๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MCP ์„œ๋ฒ„๊ฐ€ ๋ชจ๋“  ์—”ํŠธ๋ฆฌ์™€ ํŽ˜์ด์ง€๋ฅผ ์•Œ๊ณ  ์žˆ์–ด ์›ํ™œํ•œ ๋ฐ์ดํ„ฐ ํŽ˜์นญ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

Conclusion

๐Ÿ ์˜ค๋Š˜ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ  ์‹ถ๋‹ค๋ฉด Cursor์™€ MCP ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ํ†ตํ•ฉ๋˜๋Š” ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์„ ์„ ํƒํ•˜์„ธ์š”. ๊ฐœ๋ฐœ์ž๋กœ์„œ ์™„์ „ํ•œ ์ œ์–ด๊ถŒ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ตœ์‹  ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•ด ๋ชฉํ‘œ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ํฌ์ŠคํŠธ์ด์ง€๋งŒ, ์•ž์œผ๋กœ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ด ํ•™์Šต ์—ฌ์ •์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์ž‘์„ฑํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค!

Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

์™œ ์ž‘์€ ์ผ์ผ ์ž‘์—…์ด ์ƒ์‚ฐ์„ฑ์„ ์ €ํ•ดํ•˜๋Š”๊ฐ€ โ€” ๊ทธ๋ฆฌ๊ณ  ํ•˜๋‚˜์˜ Hub๊ฐ€ ํ•ด๊ฒฐํ•œ๋‹ค

๋Œ€๋ถ€๋ถ„์˜ ์ƒ์‚ฐ์„ฑ ์†์‹ค์€ ํฐ ํ”„๋กœ์ ํŠธ์—์„œ ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ…์ŠคํŠธ ํฌ๋งทํŒ…, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ƒ์„ฑ ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘๊ณ  ๋ฐ˜๋ณต์ ์ธ ์ž‘์—… ์‚ฌ์ด๋ฅผ ๋Š์ž„์—†์ด ์˜ค๊ฐ€๋ฉด์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Story CLI ๊ตฌ์ถ•: 30๋ถ„ IP ๋“ฑ๋ก์—์„œ 5๋ถ„ ์ดํ•˜๊นŒ์ง€

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Web3 ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์— ๋Œ€ํ•ด ์ €๋ฅผ ๋ถˆํŽธํ•˜๊ฒŒ ๋งŒ๋“  ์ ์€ ์ด ๋„๊ตฌ๋“ค์ด ์ข…์ข… ๊ฒฝํ—˜ ๋งŽ์€ ๋ธ”๋ก์ฒด์ธ ๊ฐœ๋ฐœ์ž๋“ค์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.