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

๋ฐœํ–‰: (2025๋…„ 12์›” 13์ผ ์˜ค์ „ 07:29 GMT+9)
6 min read
์›๋ฌธ: 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

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

Sentiment-to-Signal: ์ฃผ์‹ ์‹œ์žฅ ์ง€๋Šฅํ˜• ์—์ด์ „ํŠธ

Journey๊ฐ€ 11์›”์— Google์˜ 5์ผ์งœ๋ฆฌ Agentic AI Intensive Course์— ์ฐธ์„ํ•œ ๊ฒƒ์€ Google ADK์™€ ํ•จ๊ป˜ ์—”๋“œโ€‘ํˆฌโ€‘์—”๋“œ ํ•™์Šต ๋ฐ ๊ตฌ์ถ•์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ๊ธฐํšŒ์˜€์Šต๋‹ˆ๋‹ค. Through a combi...

๋…ธ์ฝ”๋“œ ๋นŒ๋”๋ฅผ ํ™œ์šฉํ•œ AI ์Œ์„ฑ ์—์ด์ „ํŠธ์˜ ๋น ๋ฅธ ๋ฐฐํฌ

TL;DR ๋Œ€๋ถ€๋ถ„์˜ voice agent๋Š” ํŒ€์ด ๋ชจ๋“  integration์„ hardโ€‘codeํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋ช‡ ์ฃผ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” 4์‹œ๊ฐ„ ์ด๋‚ด์— production voice agent๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

IOSM: ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—”์ง€๋‹ˆ์–ด๋ง ๋ฐฉ๋ฒ•๋ก 

๋Œ€๋ถ€๋ถ„์˜ ์—”์ง€๋‹ˆ์–ด๋ง ํŒ€์€ ์ธ์žฌ๊ฐ€ ๋ถ€์กฑํ•ด์„œ ์‹คํŒจํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐœ์„ ์ด ํ˜ผ๋ž€์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค: - ๋งˆ๋ฌด๋ฆฌ ๋ผ์ธ ์—†์ด refactors - โ€œperformance workโ€ w...