Infra & DevOps

[AWS] ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ๋„์ปค๋ผ์ด์ง•ํ•ด์„œ EC2์— ๋ฐฐํฌํ•˜๊ธฐ

hyeyeonismm 2024. 3. 8. 01:39

 

1. ๋„์ปคํŒŒ์ผ ์ž‘์„ฑ

# Node.js ์ด๋ฏธ์ง€๋ฅผ ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉ
FROM node:latest

# ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ค์ •
WORKDIR /app

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ์ผ๋“ค์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ณต์‚ฌ
COPY . /app

# ์˜์กด์„ฑ ์„ค์น˜
RUN npm install

# ๋นŒ๋“œ
RUN npm run build

# ๋Ÿฐํƒ€์ž„ ์ด๋ฏธ์ง€ ์„ ํƒ
FROM nginx:alpine

# ๋นŒ๋“œ ํŒŒ์ผ์„ Nginx ์„œ๋ฒ„์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ณต์‚ฌ
COPY --from=0 /app/build /usr/share/nginx/html

# 80 ํฌํŠธ ์—ด๊ธฐ
EXPOSE 80

# Nginx ์‹คํ–‰
CMD ["nginx", "-g", "daemon off;"]

 

ํ”„๋ก ํŠธ์—”๋“œ ์„œ๋ฒ„๋Š” nginx๋กœ ์‹คํ–‰ํ•ด์ฃผ๊ณ , ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” npm์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

2. ๋„์ปค ์ด๋ฏธ์ง€ ๋นŒ๋“œ

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋„์ปค ์ด๋ฏธ์ง€๋กœ ๋นŒ๋“œํ•ด์ค€๋‹ค.

docker build -t projectname .

 

 

3. ๋นŒ๋“œํ•œ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ์‹คํ–‰ ๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธ

docker run-p 8080:80 projectname

 

์ด๋ ‡๊ฒŒ ๋œจ๊ณ  ๋„์ปค ๋ฐ์Šคํฌํƒ‘์—์„œ ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ ํ”„๋ก ํŠธ ํ™”๋ฉด์ด ๋œฌ๋‹ค๋ฉด ์„ฑ๊ณตํ•œ ๊ฒƒ์ด๋‹ค.

 

 

4. ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋„์ปค ํ—ˆ๋ธŒ์— ํ‘ธ์‹œ

๋กœ์ปฌ์—์„œ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๊ณ  ๋„์ปคํ—ˆ๋ธŒ์— ์ด๋ฅผ ํ‘ธ์‹œํ•œ๋‹ค.

docker tag projectname dockerhub-username/projectname
docker push dockerhub-username/projectname

 

 

5. ๋‚ด๊ฐ€ ๋งŒ๋“  ec2 ์ธ์Šคํ„ด์Šค์— ์ ‘์†ํ•ด์„œ ํ‘ธ์‹œํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ํ’€๋ฐ›๋Š”๋‹ค. (GCP๋„ ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰)

docker pull dockerhub-username/projectname:latest

 

 

6. ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํผ๋ธ”๋ฆญ ip๋กœ ์ ‘๊ทผํ•œ๋‹ค.

docker run -d -p 80:80 dockerhub-username/projectname:latest