์ง๊ธ์ shell์ ์ข
๋ฃํ๋ฉด ์๋ฒ๋ ์ข
๋ฃ๊ฐ ๋๋ค.
shell์ ๊บผ๋ ์๋ฒ๊ฐ ์ผ์ ธ์๋๋ก Docker๋ฅผ ์ด์ฉํด๋ณด์!
M1์ Apple Chip ใฑใฑ
์ด๊ฑฐ ์ข ์ค๋ ๊ฑธ๋ฆฐ๋ค.. ๋ฏธ๋ฆฌ ๋ฐ์๋์ฅ
์ค์น ๋์๋์ง ํ์ธ
docker --version
docker-compose --version
docker file์ ๋ง๋ค์ด๋๋ฉด npm์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ๋ฏ์ด, github pull ๋ฐ๋ฏ์ด ์ธ ์ ์๋ค.
- Npmjs.com โ
npm install
โ VSC- github.com โ
git clone/pull/push
โ VSC- hub.docker.com โ
docker pull/push
โ VSC
class_build/Dockerfile
FROM node:14
# nodejs 14๋ฒ์ ๊ณผ npm, yarn์ ์ค์นํ๋ค.
WORKDIR /class_build/
# ์ปค์์ ์์น๋ฅผ ์๋ ๋ช
๋ น์ด๋ฅผ ์คํํ ํด๋๋ก ์ด๋ํ๋ค.
COPY . /class_build/
# . : ํ์ฌ ์๋ ๋ชจ๋ ํ์ผ๋ค
# ํ์ฌ ์๋ ๋ชจ๋ ํ์ผ๋ค์ ๋ณต์ฌํด์ ์ ํด๋์ ๋ฃ์ด์ค๋ค.
RUN yarn install
RUN yarn build:ssr
CMD yarn start
RUN & CMD
RUN๊ณผ CMD ๋ ๋ค ๋ช ๋ น์ ์คํ์ํค๋ ๋ช ๋ น์ด์ด๋ค.
CMD๋ ํ๋ฒ๋ฐ์ ๋ชป์ฐ๊ณ , RUN์ ์ฌ๋ฌ๋ฒ ์ธ ์ ์๋ค.๐ก ๋ญ๊ฐ ๋ฌ๋ผ?
RUN ๋ช ๋ น์ด๋ ๋ฏธ๋ฆฌ ์คํ์์ผ์ ์ ์ฅํด๋๋ ๊ฒ์ด๊ณ ,
CMD๋ ์คํํ ๋ ์๋๋๊ฒ ํ๋ ๋ช ๋ น์ด์ด๋ค.Dockerfile์ ๋ง๋ค๊ณ ๋๋ฉด build๋ฅผ ํ๋๋ฐ, build ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ํ๋์ ์ด๋ฏธ์ง ํํ(์์ถ๋ ํ๋์ ํ์ผ)๋ก ๋์จ๋ค.
Docker๋ฅผ ์คํํ ๋ ์์ ์ ํ ๋ช ๋ น์ด๋ค๋ก ๋งค๋ฒ ์ค์น๋ฅผ ํ๋ ๊ฒ ์๋๋ผ, ์ค์น๊น์ง ๋ค ํด๋์ ํ์ผ์ ์์ถํ๊ณ ์ต์ ํํด๋ฌ์ Dockerfile์ ์คํ์ํค๋ฉด ์ค์น๊ฐ ๋ค ๋์ด์๋ ํ์ผ์ด ํ๋ฒ์ ์คํํ๋ ๊ฒ์ด๋ค.
์ค๋ฌด์์๋ Dockerfile์ด ์ฌ๋ฌ๊ฐ์ด๋ค.
yamlํ์ผ(์ค์ ํ์ผ)์ ์คํ์ํฌ Dockerfile์ ๋ฃ์ด๋๋ฉด ์ฌ๋ฌ๊ฐ๋ฅผ ํ๋ฒ์ ์คํ์ํฌ ์ ์๋ค.
docker-compose.yaml
(yaml ํ์ผ์ ๋์ด์ฐ๊ธฐ๊ฐ ์ค์ํ๋ค! ๋์ด์ฐ๊ธฐ๋ก ๋ถ๋ชจ/ํ์ ๊ด๊ณ๊ฐ ์ค์ ๋๊ธฐ ๋๋ฌธ์ด๋ค.)
version: "3.7"
services:
my_frontend:
# ์๋น์ค ์ด๋ฆ(๋ง๋๋ก)
build:
context: .
# Dockerfile์ด ์๋ ์์น(. :ํ์์น)
dockerfile: Dockerfile
# buildํ ํ์ผ
ports:
- 3000:3000
VM์ Docker๋ก ๋ฐ๊พธ์
GCP์ VM ์ธ์คํด์ค์๋ Docker๋ฅผ ์ค์นํด์ค์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋ด ์ปดํจํฐ์ Docker๋ฅผ ์ค์นํ ์ด์ ๋?
์ผ๋จ ๋ด ์ปดํจํฐ์์๋ ํ
์คํธ๋ฅผ ํ๋ฒ ํด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ต์ ํ
docker-compose build
์คํ
docker-compose up
node_modules๋ ์นดํผ๊ฐ ๋๋ค.
node_modules๋ฅผ COPY ๋์์์ ์ ์ธ์์ผ์ผ ํ๋ค.
ํด๋น ํด๋์์ build
docker ps
ํ๋ฉด ์ปดํจํฐ ์์ด๋๋ฅผ ๋ณผ ์ ์๋ค.
docker exec -it ์ปดํจํฐ์์ด๋ /bin/bash
bash: ๋ช
๋ น์ ์
๋ ฅํ ์ปค์๋ฅผ ๋ง๋ค๊ฒ ๋ค.
git add .
- commit - pushshell์์
git pull
docker-compose build
sudo apt install docker-compose
Y
sudo docker-compose build
sudo docker-compose up
์๊ธฐ๊น์ง ํ๋ฉด ์ ์์ด ๋๋ค -> ๋์ปค ํ๊ฒฝ์์ ๋ฐฐํฌ๊ฐ ๋ ๊ฒ์ด๋ค.
sudo docker-compose up -> ์ด๊ฒ ์คํ. ์๊ฑธ ์ข ๋ฃ(ctrl+c)์ํค๋ฉด ์ ์์ด ์๋๋ค.
์๋ ์ข
๋ฃ์ํค๋ฉด ์๋๋ค.
์์์ ์ปค์๊ฐ ์์์ ๊น๋นก๊ฑฐ๋ฆฌ๋ ๊ฒ์ foreground๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋์ปค๋ฅผ ํ์ฉํ๋ฉด background์์ ๋๋ฆด ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ์์ ๊บผ๋ ์ ์์ด ๋๋ค.
sudo docker-compose up -d
sudo docker ps๋ฅผ ์ณ๋ณด๋ฉด ๋ฐฑ์์ ๋์๊ฐ๊ณ ์๋์ง ํ์ธํ ์ ์๋ค.
์ค์ ๋ก ๋ฐฐํฌ๋ฅผ ํ ๋๋ foreground๊ฐ ์๋ background์์ ๋ฐฐํฌ๋ฅผ ํ๋ค.
sudo docker-compose stop์ ์น๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ ์ข
๋ฃ๊ฐ ๋๋ค.
์ข
๋ฃ์ํค๊ณ sudo docker ps
sudo docker -compose up -d
sudo docker ps
๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ถ์ผ๋ฉด
sudo docker-compose logs
storage์ VM์ผ๋ก ๊ฐ๋ ๊ฒ์ ๋ถ๊ธฐ์ฒ๋ฆฌ
yarn build๋ฅผ ํ๋ฉด ๊ณ ์ ํ ์์ด๋ ๊ฐ์ด ๋ถ๋๋ค.
๋น๋๋ฅผ ํ ๋๋ง๋ค ์์ด๋๋ฅผ ํต์ผ์์ผ์ฃผ๊ธฐ ์ํด์ build id ์ธํ
์ ํด๋ณด์.
next.config.js
yarn build:ssg
๋ฅผ ํ๋ฉด out ํด๋๊ฐ ์๊ฒผ๋๋ฐ
์ง๊ธ ์ด๊ฑฐ ํ๋ฉด ์๋ฌ๋จ!
SSR์ static ํ์ผ๋ก ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค!!
static file์ ์ ์ด์ค๋ค.
build ๋ค์ ํ๋ฉด ์ฌ๊ธฐ์ ์ ์ ๊ฒ๋ง out ํด๋ ์์ ์๊ธฐ๊ฒ ๋๋ค.
yarn build:ssg ๋ค์ ใฑ
LoadBalancer
ํ ์คํธํ๋ ๋ฐฉ๋ฒ
์์ธ ์ฃผ์๋ฅผ ์
๋ ฅํ์ ๋ ๋์ปค๋ก ์ ์์ด ๋๋ ๊ฑฐ๋๊น
๋์ปค๋ฅผ ์ข
๋ฃํ๋ฉด ์ ์์ด ์๋์ด์ผ ํ๊ณ
๋์ปค๊ฐ ์ข
๋ฃ๋์ด ์์ด๋ ์์ธ๊ฐ ์๋ boards๋ก ๋๋๋ ์ฃผ์๋ก ์ ์ํ๋ฉด ์ ์์ด ๋์ด์ผ ํ๋ค. ๊ทธ๊ฑด ์คํ ๋ฆฌ์ง๋ก ๊ฐ๋ ๊ฑฐ๋๊น!
GCP์์ VM์ ์ ์ ์์ด ๋๊ณ ์๋ค๊ณ ๋จ๋๋ฐ,
SSR ํ์ด์ง์์๋ 500 ์๋ฌ๊ฐ ๋จ๊ณ ์ ์์ด ์๋๋ค..
VSC์์ graphql๊ณผ graphql-request๋ฅผ ๋ค์ ์ค์นํ๊ณ , git push -> git pull ํด์ ๋ค์ build& ์คํํ๋๋ ์ ์์ด ์ ๋๋น!
[VSC]
yarn add graphql
yarn add graphql-request
yarn install
[GCP - Shell]
sudo docker stop
sudo docker-compose build
sudo docker-compose up -d