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