[Docker] Dockerfileμμ νκ²½λ³μ μ¬μ©νκΈ°
π‘ ν΄λΉ κΈμ node.js νλ‘μ νΈλ₯Ό νκ²½ λ³μλ₯Ό μ¬μ©νμ¬ μ΄λ―Έμ§λ‘ build νλ μμ μ λλ€. (μμ λ node.jsλ‘ νμ§λ§ νκ²½ λ³μλ₯Ό μ¬μ©νλ λ°©λ²μ΄ λμ€λ λκΉμ§ λ΄μ£ΌμΈμ!)
βΆοΈ νκ²½ λ³μλ?
μννΈμ¨μ΄ μ ν리μΌμ΄μ μμ μ¬μ©λλ μ€μ μ΄λ κ΅¬μ± κ°λ€μ μ μ₯νλ λ° μ¬μ©λλ©°, μμ€ν νκ²½κ³Όλ λΆλ¦¬λμ΄ μ΄ν리μΌμ΄μ μ μ μ°νκ² μ€μ ν μ μκ² ν΄μ€λ€.
ex) μ ν리μΌμ΄μ PORT, λλ©μΈ μ£Όμ, μ격μ¦λͺ , κ°μΈ ν€ λ±
βΆοΈ νκ²½ λ³μλ₯Ό μ¬μ© νλ λ°©λ²
1. λ컀νμΌ λ΄μμ νκ²½ λ³μλ₯Ό μ§μ μ μ
2. νκ²½ λ³μ νμΌ μμ±
λ°©λ²1. λ컀 νμΌ λ΄μμ νκ²½ λ³μλ₯Ό μ§μ μ μ
βΆοΈ λ컀 νμΌ μμ±
βοΈ ENV μ΅μ μ μ¬μ©νλ©΄ λλ€.
FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
ENV PORT 80 # νκ²½ λ³μ μ μ
EXPOSE $PORT
CMD [ "npm", "start" ]
β’ ENV PORT 80 : PORTλ νκ²½ λ³μμ 'μ΄λ¦'μ μ§μ ν κ²μ΄λ©° 80μ νκ²½ λ³μμ DEFAULT κ°μ μ§μ ν κ²
β’ EXPOST $PORT : $PORTλ μμμ μ μν νκ²½ λ³μλ₯Ό μ¬μ©ν κ²μ΄λ©° $λ₯Ό μ¬μ©ν΄μ νκ²½ λ³μλ₯Ό μ¬μ©νμμ μλ¦Ό
βΆοΈ λ컀 μ€ν λͺ λ Ήμ΄
βοΈ --env λλ -e μ΅μ μ μ¬μ©νμ¬ νκ²½ λ³μλ₯Ό μ§μ ν΄μ€ μ μλ€.
βοΈ νκ²½ λ³μκ° μ¬λ¬ κ°μΈ κ²½μ° key=value ννλ‘ κ³μ λμ΄ ν΄μ£Όλ©΄ λλ€.
→ docker run -d --rm -p 3000:8000 --env PORT=8000 --name feedback-app -v feedback:/app/feedback -v /app/node_modules -v /app/temp feedback-node:env
→ docker run -d --rm -p 3000:8000 -e PORT=8000 --name feedback-app -v feedback:/app/feedback -v /app/node_modules -v /app/temp feedback-node:env
→ docker run -d --rm -p 3000:8000 -e PORT=8000 -e KEY=VALUE --name feedback-app -v feedback:/app/feedback -v /app/node_modules -v /app/temp feedback-node:env
β’ μκΉ DEFAULT κ°μ 80μ΄μμ§λ§ μ΄λ κ² run ν λ κ°μ λ£μ΄μ£Όλ©΄ 8000μ΄λΌλ κ°μΌλ‘ νκ²½λ³μκ° μ ν λμ΄ μλνλ€.
λ°©λ²2. νκ²½ λ³μ νμΌ μμ±
βΆοΈ .env νμΌ μμ± ν μλ μ½λ μμ±
βοΈ key=value ννλ‘ μμ±
PORT=8000
βΆοΈ λ컀 μ€ν λͺ λ Ήμ΄
βοΈ --env-file μ΅μ μ μ¬μ©νμ¬ νκ²½ λ³μ νμΌμ μ§μ ν΄μ€ μ μλ€.
→ docker run -d --rm -p 3000:8000 --env-file ./.env --name feedback-app -v feedback:/app/feedback -v /app/node_modules -v /app/temp feedback-node:env
β’ ./.env λ .env νμΌμ΄ νμ¬ λλ ν 리μ μλ€λ κ²μ μλ―Ένλ€. λ°λΌμ νμ¬ λν ν 리μ μλ .env νμΌμ νκ²½ λ³μ νμΌλ‘ μ¬μ©νκ² λ€λ μλ―Έ
μ΄λ€ λ°©λ²μ΄ λ μ’μκΉ?
βοΈ νκ²½ λ³μλ λ³΄ν΅ λ°νμμμ μ¬μ©λλ λ³λμ νκ²½ λ³μ νμΌλ‘ μ΄λ μν¨λ€. κ·Έλ μ§ μμΌλ©΄ κ°μ΄ μ΄λ―Έμ§μ ν¬ν¨λλ©° docker history <μ΄λ―Έμ§> λͺ λ Ήμ΄λ₯Ό ν΅ν΄ μ΄ νκ²½ λ³μ κ°μ μ½μ μ μλ€κ³ νλ€. λ°λΌμ νκ²½ λ³μ νμΌμ μμ±νμ¬ μ¬μ©νλ κ²μ κΆμ₯νλ€.
βοΈ λ³λμ νμΌμ μμ±νμ¬ μ¬μ©νλ κ²½μ° μμ€ μ»¨νΈλ‘€ μ μ₯μμ μΌλΆλΆμΌλ‘ 컀λ°νμ§ μλλ‘ μ‘°μ¬ν΄μΌνλ€.