3. dockerfile-syntax
Dockerfile syntax ์ ๋ฆฌ
All about Dockerfile syntax
FROM
๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ง์
RUN
์ปจํ ์ด๋ ๋ด์์ ์คํํ ์ ๋ช ๋ น์ด๋ฅผ ์ง์ ํ์ฌ ํจํค์ง ๋๋ ์ํํธ์จ์ด ์ค์
WORKDIR
๋ช ๋ น์ด ์คํ๋ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์
ํด๋น ๋๋ ํ ๋ฆฌ๊ฐ ์๋ค๋ฉด ์์ฑ๋จ
COPY
ํธ์คํธ ๋จธ์ ์ ํ์ผ์ ์ปจํ ์ด๋ ๋ด๋ถ๋ก ๋ณต์ฌ
ADD
COPY์ ์ ์ฌ. ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ ์ ๊ณต
๋ก์ปฌ ํ์ผ์ด๋ URL ๋ณต์ฌํ ์ ์์ผ๋ฉฐ, ์์ถ ํ์ผ ์๋์ผ๋ก ํด์ ํ๊ณ ์๊ฒฉ ํ์ผ ๋ค์ด๋ก๋ ๊ฐ๋ฅ
CMD
์ปจํ ์ด๋๊ฐ ์์๋ ๋ ์คํํ๋ ๋ช ๋ น์ ์ค์
๋์ปค ํ์ผ์์ ํ ๋ฒ๋ง ์ฌ์ฉํด์ผ ํจ
๋์์ ์ฌ๋ฌ ๊ฐ์ CMD ์ง์๋ฌธ์ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ง์ง๋ง CMD๋ง ์ ์ฉ๋จ
ENTRYPOINT
์ปจํ ์ด๋๊ฐ ์์๋ ๋ ์คํ๋๋ ์คํ ํ์ผ ์ค์
CMD์ ์ ์ฌํ์ง๋ง ENTRYPOINT๋ ํญ์ ์คํ๋จ
CMD๋ ENTRYPOINT์ ์ธ์๋ก ์ฌ์ฉ๋จ
ENV
ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์
ARG
๋น๋ ์ค์ ์ ๋ฌ๋๋ ์ธ์๋ฅผ ์ ์ํฉ๋๋ค.
EXPOSE
์ปจํ ์ด๋๊ฐ ๋ ธ์ถํ ํฌํธ ์ค์
VOLUME
ํธ์คํธ ๋จธ์ ๊ณผ ์ปจํ ์ด๋ ๊ฐ์ ๋ณผ๋ฅจ์ ๊ณต์ ํ ์ ์๋๋ก ์ค์
USER
์ปจํ ์ด๋๊ฐ ์คํ๋ ์ฌ์ฉ์๋ฅผ ์ค์
HEALTHCHECK
์ปจํ ์ด๋์ ์ํ๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์ค์
LABEL
์ด๋ฏธ์ง์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ
LABEL version="1.0"
SHELL
๊ธฐ๋ณธ ์ ์ง์
SHELL ["/bin/bash", "-c"]
STOPSIGNAL
์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋ ๋ ๋ณด๋ด์ง ์๊ทธ๋์ ์ง์
STOPSIGNAL SIGTERM
sample
Node.js Dockerfile sample
FROM node:20.11-alpine
RUN apk update && apk add bash sudo vim
WORKDIR /app
COPY . .
RUN npm cache clean --force && rm -rf node_modules && npm install
EXPOSE 3000
CMD ["npm", "run", "start"]
Python&Django Dockerfile sample
FROM python:3.11
ENV PYTHONUNBUFFERED=1
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENTRYPOINT ["uvicorn", "myproject.asgi:application", "--host", "0.0.0.0", "--port", "8000"]
Multistaging nodejs sample
FROM node:14 AS development
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "dev"]
FROM node:14 AS production
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
RUN npm run build
CMD ["npm", "start"]
Build Docker image multistaging
docker build --target development --t node:dev .
docker build --target production --t node:dev .
docker compose
docker-compose up [options] [SERVICE...]
docker compose up
docker compose up -d(--detach)
- ์ปจํ
์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ชจ๋๋ก ์คํ
docker compose up --force-recreate
- ๋ณ๊ฒฝ ์ฌํญ์ด ์์ด๋ ์ปจํ
์ด๋๋ฅผ ๊ฐ์ ๋ก ๋ค์ ์์ฑ
docker compose images
docker compose down
docker compose build
docker compose start
docker compose stop
docker compose stop -t 20 # stop with a timeout
docker compose restart
docker compose rf
docker compose rf -f
docker compose logs
docker compose logs -f # follow log output
docker compose exec [my-service] bash
docker compose ps
Last updated