For the complete documentation index, see llms.txt. This page is also available as Markdown.

NuxtJS

์‹œ์ž‘ํ•˜๊ธฐ

Edgegap์€ ํ•„์š”์— ๋”ฐ๋ผ ์„œ๋ฒ„๋ฆฌ์Šค ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์ง๊ด€์ ์ธ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” Nuxt ์•ฑ์„ ๋ฐฐํฌํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์„ ํ™•์ธํ•˜๊ธฐ ์ „์— yarn ๋˜๋Š” npm, npx์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” yarn์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ฒ˜์Œ์—๋Š” ๋นˆ ํด๋”์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋” ์œ„์น˜์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”:

C:\Users\JohnDoe\Documents\demo-nuxt-edgegap> yarn

๋ชจ๋“  ์ข…์†์„ฑ์ด ์„ค์น˜๋˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ œ๋Œ€๋กœ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

C:\Users\JohnDoe\Documents\demo-nuxt-edgegap> yarn dev

yarn dev๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์œผ๋ฉด ์„ค์น˜๋œ yarn์˜ ๋ฒ„์ „์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์ด ๋๋‚˜๋ฉด ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•œ ๋‚˜๋จธ์ง€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”๊ตฌ ์‚ฌํ•ญ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. Dockerfile์„ ์ƒ์„ฑํ•œ ๋‹ค์Œ ํ•ด๋‹น ํŒŒ์ผ์„ Docker์—์„œ ์‹คํ–‰ํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Visual Studio Code๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ํŒŒ์ผ์— ํ™•์žฅ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋ถ™์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Dockerfile์„ ์ž‘์„ฑํ•˜๊ธฐ์— ์ข‹์€ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ด๋ฆ„์„ Dockerfile๋กœ ์ง€์ •ํ•˜์„ธ์š”. ํŒŒ์ผ ์˜†์— ์ž‘์€ ๋„์ปค ๋กœ๊ณ ๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์ฃผ์š” ์ข…์†์„ฑ์„ ์–ป๊ธฐ ์œ„ํ•ด ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ์•ฝ 1GB๋ฅผ ์กฐ๊ธˆ ๋„˜๊ฒŒ ์ƒ์„ฑ๋œ๋‹ค๋Š” ์ ์„ ์œ ๋…ํ•˜์„ธ์š”. ์ด ํŠœํ† ๋ฆฌ์–ผ ๋ชฉ์ ์—๋Š” ๊ดœ์ฐฎ์ง€๋งŒ, ํ”„๋กœ๋•์…˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์ตœ์ ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

FROM node:lts as builder

WORKDIR /app

COPY . .

RUN yarn install \
  --prefer-offline \
  --frozen-lockfile \
  --non-interactive \
  --production=false

RUN yarn build

RUN rm -rf node_modules && \
  NODE_ENV=production yarn install \
  --prefer-offline \
  --pure-lockfile \
  --non-interactive \
  --production=true

FROM node:lts

WORKDIR /app

COPY --from=builder /app  .

ENV HOST 0.0.0.0
EXPOSE 80

CMD [ "yarn", "start" ]

Dockerfile์„ ์ €์žฅํ•œ ํ›„ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

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

ํ•˜์ง€๋งŒ ๊ทธ ์ „์— ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•œ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ Docker ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ œ๊ณต๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ๋ณด์•ˆ ์ด์ ์„ ์ œ๊ณตํ•˜๋Š” Harbor๋ฅผ ํ†ตํ•œ ์‚ฌ์„ค ์ €์žฅ์†Œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

ํ•˜์ง€๋งŒ ๊ทธ ์ „์— ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•œ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ Docker ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ œ๊ณต๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ๋ณด์•ˆ ์ด์ ์„ ์ œ๊ณตํ•˜๋Š” Edgegap Registry๋ฅผ ํ†ตํ•œ ์‚ฌ์„ค ์ €์žฅ์†Œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

์ด๋ฏธ์ง€๋ฅผ ์šฐ๋ฆฌ ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•˜๋ ค๋ฉด ๋จผ์ € ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

์ด์ œ ๋‚จ์€ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค:

์ข‹์Šต๋‹ˆ๋‹ค! ์ด์ œ Edgegap ํ”Œ๋žซํผ์— Nuxt ์•ฑ์„ ๋ฐฐํฌํ•˜๊ธฐ๊นŒ์ง€ ๋‹จ ํ•œ ๋‹จ๊ณ„๋งŒ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.

Edgegap์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌํ•˜๊ธฐ

Edgegap์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ๋‹น์‚ฌ ๊ณ„์ •์ด ํ•„์š”ํ•˜๋ฉฐ, ์—ฌ๊ธฐ์—์„œ ๋ฌด๋ฃŒ๋กœ ๊ณ„์ •์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์›น์‚ฌ์ดํŠธ๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Edgegap ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ:

๋‹ค์Œ ์›น ์ฃผ์†Œ๋กœ ์ด๋™ํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋Œ€์‹œ๋ณด๋“œ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๊ณ„์ •์„ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ ๋ฐ”๋กœ ์ฒซ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•˜๋Š” ์˜ต์…˜์„ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ํ™”๋ฉด ์™ผ์ชฝ์˜ ๋ฉ”๋‰ด์—์„œ 'Applications and games' ํƒญ์œผ๋กœ ์ด๋™ํ•˜์„ธ์š”. ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๋Š” ์˜ต์…˜์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค:

ํด๋ฆญํ•˜๋ฉด ๋‹ค์Œ ์–‘์‹์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค:

ํ•„์ˆ˜ ํ•„๋“œ๋ฅผ ๋ชจ๋‘ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ์™„๋ฃŒํ•œ ํ›„ ๊ธฐ๋ณธ๊ฐ’์—์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํฌํŠธ ๋ฒˆํ˜ธ: ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํฌํŠธ 3000์„ ์—ด์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ƒ์„ฑ ์–‘์‹์˜ 'ports' ์„น์…˜์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

  • ์ตœ๋Œ€ ๋ฐฐํฌ ์‹œ๊ฐ„: ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์šฐ๋ฆฌ์˜ NuxtJS ์ด๋ฏธ์ง€๋Š” ์•ฝ 1GB ์ •๋„์ž…๋‹ˆ๋‹ค. Edgegap์— ์ด๋ ‡๊ฒŒ ํฐ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•˜๋ ค๋ฉด ์ตœ๋Œ€ ๋ฐฐํฌ ์‹œ๊ฐ„์„ ์•ฝ 300์ดˆ๋กœ ๋Š˜๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ ์ ˆํ•œ ์ •๋ณด๋กœ ์–‘์‹์„ ์ž‘์„ฑํ•œ ํ›„ ์ œ์ถœํ•˜๋ฉด ๋ฐฐํฌ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋ฆฌ์ „๊ณผ ์—๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋ ค๋Š” ํ”Œ๋ ˆ์ด์–ด ์ˆ˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.

์„ ํƒ์„ ํ™•์ธํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ณง ์˜จ๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ๋œ ํ›„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ์ด๋ฏธ์ง€์—์„œ ์›์œผ๋กœ ํ‘œ์‹œํ•œ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Nuxt ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ๋žœ๋”ฉ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์ƒˆ ํƒญ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค.

Edgegap์˜ API๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌํ•˜๊ธฐ

์›น ๋Œ€์‹œ๋ณด๋“œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๊ฐ€์žฅ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ๋งค์šฐ ๊ฐ„๋‹จํ•œ API ์š”์ฒญ์„ ํ†ตํ•ด์„œ๋„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Postman์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ•„ ์˜ต์…˜์—์„œ API ํ† ํฐ ์ƒ์„ฑ ํ”„๋กœํ•„์˜ ์˜ต์…˜์„ ํ†ตํ•ด. ๋‹ค์Œ์€ API ํ† ํฐ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

API ํ† ํฐ์„ ์–ป์œผ๋ฉด ๋‚จ์€ ๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„, ๋ฒ„์ „, IP ์ฃผ์†Œ, ๋ฐฐํฌํ•  ๋ฆฌ์ „ ๋ฐ ์ธ์ฆ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ผ๋ถ€๋กœ ํ† ํฐ์„ ํฌํ•จํ•œ ๋ฐฐํฌ ์š”์ฒญ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ์š”์ฒญ ์˜ˆ์‹œ๋Š” ์šฐ๋ฆฌ์˜ ๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์ปค๋งจ๋“œ ๋ผ์ธ์ด๋‚˜ Postman์—์„œ ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

CLI๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์•ผ ํ•  ์ผ์€ ์ด๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์•ฑ์ด ๋ฐฐํฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋Œ€์‹œ๋ณด๋“œ๋กœ ๋‹ค์‹œ ์ด๋™ํ•˜์—ฌ โ€œActive deploymentsโ€ ํƒญ์„ ํด๋ฆญํ•˜๋ฉด ํ™œ์„ฑ ๋ฐฐํฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ

๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?