docker image
๋ก ๋ง๋ค๊ธฐ ์ํ Dockerfile
์์ฑ๊ฐ๋จํ Docker ๋ช ๋ น์ด๋ ์ด์ ํฌ์คํธ๋ฅผ ํ์ธํด์ฃผ์ธ์ !
node.js๋ฅผ ์ค์ตํ๋ ๊ฒ์ด ์ค์ํ๊ฒ ์๋๋ ์ ๋ง ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด๋ณผ๊ฒ์.
(node
์ npm
์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค!)
npm init
(node ํ๋ก์ ํธ ์์ฑ)express
์ค์น (npm install express --save
)package.json
์ dependency์ ๋ณด๊ฐ ์ ์ฅ๋์ด์ผ ํด์. ๊ผญ --save
์ต์
์ ์จ์ฃผ์ธ์.[ index.js ]
const express = require("express");
const port = "8080";
const app = express();
app.get("/", (req, res) => {
res.send("hello world");
});
app.listen(port);
console.log(`server running on ${port}`);
node index.js
Docker image
๋ฅผ ๋ง๋ค๊ธฐ ์ํด Docker image
์ ์ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ Dockerfile
์ ์์ฑํด์ค๋๋ค.
Dockerfile
์ ์์ฑํฉ๋๋ค.[ Dockerfile ]
# base image (npm์ ๊ฐ๊ณ ์๋ baseimage ์ค ํ๋)
FROM node:10
# Working Directory ์ง์
WORKDIR /usr/src/app
# COPY package.json ./
COPY ./ ./
# node์ ์ข
์์ฑ ๋ค์ด๋ก๋
RUN npm install
CMD ["node", "index.js"]
base image
๋ฅผ ํตํด ์์ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ์์ฑ๋ ์์ ์ปจํ
์ด๋๋ก ๋ถํฐ ์์ฑํ๊ณ ์ ํ๋ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋๋ ๊ตฌ์กฐ์
๋๋ค.npm
๋ช
๋ น์ด๋ฅผ ํ์๋ก ํ๊ธฐ์ npm
๋ช
๋ น์ด๋ฅผ ํฌํจํ๋ node:10
์ด๋ฏธ์ง๋ฅผ base image
๋ก ์ฌ์ฉํฉ๋๋ค.working directory
๋ฅผ ์ง์ ํ๋ ๋ถ๋ถ์
๋๋ค.COPY
๋ถ๋ถ์์ ํ์๋ก ํ๋ ์์ค์ฝ๋๋ฅผ ์ปจํ
์ด๋๋ก ๋ณต์ฌํด์ค๋๋ฐ working directory
๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ์ปจํ
์ด๋์ ๋ฃจํธ ๊ฒฝ๋ก์ ํด๋ ์์ด ์ง์ ๋ถํ๊ฒ ๋ณต์ฌ๋์ด ์ข์ง ์์ต๋๋ค.COPY
์ ๋ฃจํธ ๊ฒฝ๋ก์ COPY
๋๋ ํ์ผ๊ณผ ๋์ผํ ํด๋ ํน์ธ ํ์ผ์ด ์๋ค๋ฉด ๋ฎ์ด์ฐ๋ ๊ฒ์ผ๋ก ์๊ณ ์์ต๋๋ค.. ์๋ฌดํผ ์ํํ๋ working directory
์ ์ํ๋ ํ์ผ์ด ๋ณต์ฌ๋ ์ ์๋๋ก ์ง์ ํด์ค์๋ค.COPY
์ ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ปจํ
์ด๋๋ก ๋ณต์ฌํ๊ณ ์ ํ๋ ํ์ผ ํน์ ํด๋์
๋๋ค. ์ฌ๊ธฐ์ ./๋ ํ๋ก์ ํธ์ ๋ฃจํธ ๊ฒฝ๋ก์ ์๋ ๋ชจ๋ ํด๋ ๋ฐ ํ์ผ์ ๋ณต์ฌํ๋ค๋ ์๋ฏธ๊ฒ ์ฃ ?COPY
์ ๋ ๋ฒ์งธ ์ธ์๋ ์ปจํ
์ด๋์ ๋ณต์ฌ๋๋ ๊ฒฝ๋ก๋ก ์๊ณ ์๋๋ฐ, ์คํํด๋ณธ ๊ฒฐ๊ณผ working directory
๋ฅผ ์ง์ ํ๋ฉด ์ง์ ํ ๊ฒฝ๋ก๋ก ๋ณต์ฌ๋ฉ๋๋ค.express
๋ฅผ ๋ฐ์์์ผ๊ฒ ์ฃ ??npm install
๋ช
๋ น์ด๋ฅผ ํตํด pacakage.json
์ ๋ช
์๋ ์ข
์์ฑ์ ๋ค์ด๋ก๋ ํ ์ ์์ต๋๋ค.index.js
๋ฅผ ์คํ์์ผ ์๋ฒ๋ฅผ ๊ตฌ๋์ํฌ ๊ฒ ์
๋๋ค.์์ฑํ Dockerfile
์ ๊ธฐ๋ฐํ์ฌ docker build
๋ช
๋ น์ด๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
-t
์ต์
: ์์ฑ๋ ์ด๋ฏธ์ง์ ์ด๋ฆ์ ๋ถ์ฌํฉ๋๋ค. ๊ด๋ก๋ก "dockerID/ํ๋ก์ ํธ์ด๋ฆ" ๋ก ์ง์ ํด์ค๋ค๊ณ ํฉ๋๋ค.-t
์ต์
์ ๋นผ๊ณ ํ ๋ฒ ๋ณด์ฃ docker build ./
ํ์ฌ ํ๋ก์ ํธ๋ฅผ docker์ ์ด๋ฏธ์ง๋ก ๋น๋ํ๋ค ? ์ ๋๋ก ์ดํดํด๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค.-t
์ต์
์ผ๋ก ์ง์ ํ ์ด๋ฆ์ผ๋ก ์ด๋ฏธ์ง๊ฐ ์์ฑ๋์๊ณ base image
๋ก ์ง์ ํ node
๋ ์ด๋ฏธ์ง๋ก ์์ฑ๋์์ต๋๋ค.์ด์ ์ปจํ
์ด๋๋ฅผ ์์ฑํด์ ์๋ฒ๋ฅผ ๊ตฌ๋์ํค๋ฉด ๋๋๋ฐ ํ๊ฐ์ง ์ค์ ํด์ค์ผ ํ๋๊ฒ ์์ต๋๋ค.
์ ์ค์ ์ด ๋ ํ์ํ ๊ฒ์ธ์ง ์ผ๋จ ์คํ์์ผ๋ณด๊ณ ์์๋ด
์๋ค.
docker run zbeld123/node-app
์ผ๋ก ์ปจํ
์ด๋๋ฅผ ๊ตฌ๋์ํจ ๊ฒฐ๊ณผ์
๋๋ค.ํฌํธ ์ค์
์ปจํ ์ด๋ ํ๊ฒฝ์์์ port์ ์ปจํ ์ด๋ ์ธ๋ถ์์ ์ ์ํ๋ port๋ฅผ ๋งคํ์์ผ์ฃผ์ด์ผ ํฉ๋๋ค.
- ์ฐ๋ฆฌ๊ฐ node app์์ ์ค์ ํ port๋ ์ปจํ ์ด๋ ํ๊ฒฝ์์์ port์ ๋๋ค.
- ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ ์ํ๋ ๊ฒ์ ์ปจํ ์ด๋ ์ธ๋ถ์์ ์ ์ํ๋ ๊ฒ์ด๊ธฐ์ port ์ ๋ณด๋ฅผ ๋งคํ ์์ผ์ฃผ์ด์ผ ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๊ฐ ๋ธ๋ผ์ฐ์ ์์ 5000๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ๋ค๋ฉด 5000๋ฒ ํฌํธ๋ฅผ ์ปจํ ์ด๋์ ํฌํธ๋ฒํธ์ธ 8080ํฌํธ๋ก ๋งคํ์ํฌ ์ ์๋ ๋งคํ ์ ๋ณด๊ฐ ํ์ํ ๊ฒ์ ๋๋ค.
docker run -p [์ ์ํ ํฌํธ]:[์ปจํ ์ด๋์ ํฌํธ] zbeld123/node-app
-p
์ต์ ์ ์ด์ฉํ์ฌ ๋งคํ์ ๋ณด๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
-p
์ต์
์ ์ถ๊ฐํ์ฌ ์ปจํ
์ด๋๋ฅผ ๊ตฌ๋์์ผ๋ด
์๋ค!-p 5000:8000
์ผ๋ก ์ค์ ํ์์ผ๋ฏ๋ก 5000๋ฒ ํฌํธ๋ก ์ ๊ทผ์ด ์ฑ๊ณตํ์์ต๋๋ค !!!-p
์ต์
์ ์ฌ์ฉํ ๋ :
์ธ๋ฏธ์ฝ๋ก ์ ์ ๋ค๋ฅผ ๊ผญ ๋ถ์ฌ์ฃผ์
์ผ ํฉ๋๋ค ใ
Docker์ Hello world ํ์คํธ๋ฅผ ๊ฒจ์ฐ ์์ํ ๋๋..? ์ด๋ค์ ..! :)