์๋ฒ๋ง๋ค ๊ฐ๋ฐ์๋ง๋ค ๊ฐ๋ฐํ๊ฒฝ์ด ๋ค ๋ค๋ฅด๊ธฐ๋๋ฌธ์ ํ์ํจ
์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ปจํ ์ด๋์ ์ ์ฅ์์ผ๋๋๊ฐ๋
docker file์ ๋ง๋ค์ด์ผํ๊ณ ์ด๊ฒ์ ์ด์ฉํด image๋ฅผ ๋ง๋ค๊ณ image๋ฅผ ์ด์ฉํด ์ปจํ ์ด๋๋ฅผ ๊ตฌ๋์ํจ๋ค
docker file = ์ด๋ค dependency๋ ํ๊ฒฝ๋ณ์ ์ด๋ป๊ฒ๊ตฌ๋ํ๋์ง script ๋ฑ๋ฑ ํฌํจ
image = ์คํ๋๊ณ ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์ค๋ ์ทํด์ ์ ์ฅํด๋
container = ๊ณ ๋ฆฝ๋ํ๊ฒฝ์์ image๋ฅผ์ด์ฉํด์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํจ
- ๋์ปค์ค์น https://www.docker.com/
- vscode ์ฌ์ฉ์ docker extension ์ค์นํด๋๋ฉด ์ข์
- npm init -y ๋ฅผ ์ด์ฉํด ํ๋ก์ ํธ์ด๊ธฐํ
- npm i express ๋ก ์ฌํํ ๋ฐฑ์๋ ํ๋ก์ ํธ์์ฑ
- index.js ํ์ผ ์์ฑ
-index.js-
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('๐ณ Dream Coding in Docker! ๐ณ');
});
app.listen(80, () => console.log('Server is running ๐ค'));
6.Dockerfile ์์ฑ
Dockerfile - ํ์ผ์ด๋ฆ์ -
FROM node:16-alpine
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY index.js .
ENTRYPOINT [ "node", "index.js" ]
๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ณธ์ด๋ฏธ์ง๋ฅผ fromํด์์ ์ฌ์ฉ node์์ ์ ๊ณตํด์ฃผ๋ node:16-alpine ๋ฆฌ๋ ์ค ์ด๋ฏธ์ง ์ฌ์ฉ
WORKDIR /app = ์ปจํ ์ด๋ ๊ฒฝ๋ก์์์ /app ํด๋์์ ํ๋ก์ ํธ๊ด๋ จํ์ผ์ copy ํ๊ฒ ๋ค
๋์ปคํ์ผ์ ๋ ์ด์ด์์คํ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฏ๋ก ๊ฐ์ฅ ๋น๋ฒํ ๋ณํ๋ ํ์ผ์ ๋์ค์ copy ํ๋๊ฒ์ด ์ข์
๋ญ๊ฐ์ข์๊ฐ? -> ( ๋์ค์ copyํ ํ์ผ์ด ๋ ์ด์ด์ ์ต์๋จ์ผ๋ก ์์น๋๋ฉฐ ์๋ก์ด ๋์ปค์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด์ผํ ๋ ๋ณ๊ฒฝ๋์ง ์์ ์ด๋ฏธ์ง๋ ์บ์๋๊ฑธ๋ก ์ฌ์ฌ์ฉํ๊ธฐ๋๋ฌธ์ ํจ์จ์ฑ ๋ฐ ์๊ฐ๋จ์ถ์ ์ฉ์ด)
npm install ๋์ npm ci๋ฅผ ์ฌ์ฉํ๋๊ฒ์ด ๋ ์ข๋ค npm install์ ํญ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์์ ๋ถ์์ ํ์ง๋ง npm ci๋ ์ค์ ๋ก package-lock.json์ ์ ํ์๋ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ ๋ฒ์ ๊ทธ๋๋ก์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค.
ENTRYPOINT [ "node", "index.js" ] = node๋ก ์คํํ๊ณ index.js๋ฅผ ์คํํด์ค
docker buildํ๊ธฐ
docker build -f Dockerfile -t eogud-docker . ( ๋ง์ง๋ง์ .์ ํ์ฌ๊ฒฝ๋ก๋ฅผ ์ง์ -t๋ ๋์ปค์ ์ด๋ฆ์ง์ ๊ฐ๋ฅ -f๋ ๋ด๋์ปคํ์ผ์ด๋ฆ ์ ์ด์ฃผ๊ธฐ)
docker images ๋ช ๋ น์ด ์ฌ์ฉ์ ํ์ธ๊ฐ๋ฅ
์ปจํ ์ด๋ ์คํ๋ฐฉ๋ฒ docker run -d -p 8080(ํธ์คํธํฌํธ):8080(์ปจํ ์ด๋ํฌํธ) eogud-docker
๋์ปค๊ฐ ์คํ๋๊ณ ์๋์ง ํ์ธ = docker ps
๋ธ๋ผ์ฐ์ ์์ localhost:8080์ ์ ์ํ๋ฉด index.js์ ์ ํ๊ธ์ด ๋ฑ์ฅ
์ปจํ ์ด๋ registory์ imageํ์ผ ์ฌ๋ฆฌ๊ธฐ docker hub์ด์ฉ
push ํ ๋๋ hub์ push์ด๋ป๊ฒํด์ผํ๋์ง ๋์ด ํด๋น๋ช ๋ น์ด๋ก ์์ฑ
ํฐ๋ฏธ๋์์ docker login ๋ช ๋ น์ด ์์ฑํ ์์ด๋/๋น๋ฐ๋ฒํธ ์์ฑ ์ดํ push ํด์ฃผ๋ฉด hub repository์ ์ฌ๋ผ๊ฐ๊ฒ์ ํ์ธํ ์์์
push์ ์ ํ ๋ช
๋ น์ด์ ๋ดํ์ผ์ด๋ฆ์ด ๋ค๋ฅผ๋๋ tag ๋ช
๋ น์ด๋ฅผ ์ด์ฉํด์ ๋ณ๊ฒฝ๊ฐ๋ฅ
ex) docker tag eogud-docker:latest eogud/eogud-example:latest ์ด๋ฐ์์ผ๋ก ์์ฑํด์ฃผ๋ฉด eogud/eogud-example:latest๋ก ํ์ผ์ด๋ฆ์ด ๋ณ๊ฒฝ๋๋ค