๐Ÿ’พ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ดย Dockerfile ์ด๋ผ๋Š” ์ด๋ฏธ์ง€ ๋นŒ๋“œ์šฉ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


docker_image_build

๐ŸŽฏ Dockerfile ๊ตฌ์กฐ

Ruby ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ubuntu์— ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

Dockerfile ์ƒ์„ฑ

์•„๋ž˜ ๊ณผ์ •์„ ์‰˜ ์Šคํฌ๋ฆฝํŠธ, Dockerfile๋กœ ๋งŒ๋“ค์–ด ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์ˆœ์„œ  |  ์ž‘์—…
---------------------
1    |  ubuntu ์„ค์น˜
2    |  ruby ์„ค์น˜
3    |  ์†Œ์Šค ๋ณต์‚ฌ
4    |  Gem ํŒจํ‚ค์ง€ ์„ค์น˜
5    |  Sinatra ์„œ๋ฒ„ ์‹คํ–‰


์‰˜ ์Šคํฌ๋ฆฝํŠธ

# 1. ubuntu ์„ค์น˜ (ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ)
apt-get update

# 2. ruby ์„ค์น˜
apt-get install ruby
gem install bundler

# 3. ์†Œ์Šค ๋ณต์‚ฌ
mkdir -p /usr/src/app
scp Gemfile app.rb root@ubuntu:/usr/src/app  # From host

# 4. Gem ํŒจํ‚ค์ง€ ์„ค์น˜
bundle install

# 5. Sinatra ์„œ๋ฒ„ ์‹คํ–‰
bundle exec ruby app.rb


Dockerfile

## ํ•ต์‹ฌ ๋ช…๋ น์–ด๋Š” ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” COPY์™€ ์‹คํ–‰ํ•˜๋Š” RUN ์ž…๋‹ˆ๋‹ค.
# 1. ubuntu ์„ค์น˜ (ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ + ๋งŒ๋“ ์‚ฌ๋žŒ ํ‘œ์‹œ)
FROM       ubuntu:16.04
MAINTAINER subicura@subicura.com
RUN        apt-get -y update

# 2. ruby ์„ค์น˜
RUN apt-get -y install ruby
RUN gem install bundler

# 3. ์†Œ์Šค ๋ณต์‚ฌ
COPY . /usr/src/app

# 4. Gem ํŒจํ‚ค์ง€ ์„ค์น˜ (์‹คํ–‰ ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •)
WORKDIR /usr/src/app
RUN     bundle install

# 5. Sinatra ์„œ๋ฒ„ ์‹คํ–‰ (Listen ํฌํŠธ ์ •์˜)
EXPOSE 4567
CMD    bundle exec ruby app.rb -o 0.0.0.0

์‰˜ ์Šคํฌ๋ฆฝํŠธ์˜ ๋‚ด์šฉ์„ ๊ฑฐ์˜ ๊ทธ๋Œ€๋กœ Dockerfile๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค. ์ฐจ์ด์ ์€ ๋„์ปค ๋นŒ๋“œ ์ค‘์—” ํ‚ค๋ณด๋“œ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—ย (y/n) ์„ ๋ฌผ์–ด๋ณด๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ดย -yย ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ ์ •๋„์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ƒ์„ฑ

์ƒ์„ฑํ•œ Dockerfile์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

# Dockerfile์„ ๋งŒ๋“  ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
# docker build -t [์ƒˆ๋กœ ์ƒ์„ฑํ•  ์ด๋ฏธ์ง€ ์ด๋ฆ„] [Dockerfile ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ]
$ docker build -t app .


ํ™•์ธ

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
app                 latest              54d239c00f11        4 minutes ago       209 MB
ubuntu              16.04               f49eec89601e        2 weeks ago         129 MB






๐ŸŽฏ Dockerfile ๊ธฐ๋ณธ ๋ช…๋ น์–ด

Dockerfile์˜ ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

FROM

ํ•˜๋‚˜์˜ Docker ์ด๋ฏธ์ง€๋Š” base ์ด๋ฏธ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๊ธฐ์กด ์ด๋ฏธ์ง€์œ„์— ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋ฅผ ์ค‘์ฒฉํ•ด์„œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์ด๋ฏธ์ง€ ์ธต(layer)์„ ์Œ“์•„๊ฐ€๋ฉฐ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

FROMย ๋ช…๋ น๋ฌธ์€ ์ด base ์ด๋ฏธ์ง€๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ๋ณดํ†ต Dockerfile ๋‚ด์—์„œ ์ตœ์ƒ๋‹จ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. base ์ด๋ฏธ์ง€๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Docker Hub์™€ ๊ฐ™์€ Docker repository์— ์˜ฌ๋ ค๋†“์€ ์ž˜ ์•Œ๋ ค์ง„ ๊ณต๊ฐœ ์ด๋ฏธ์ง€์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

# FROM <์ด๋ฏธ์ง€>
# FROM <์ด๋ฏธ์ง€>:<ํƒœ๊ทธ>

# Ubuntu ์ตœ์‹  ๋ฒ„์ „์„ base ์ด๋ฏธ์ง€๋กœ ์‚ฌ์šฉ
FROM ubuntu:latest


MAINTAINER (deprecated)

Dockerfile์„ ๊ด€๋ฆฌํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ด๋ฆ„ ๋˜๋Š” ์ด๋ฉ”์ผ ์ •๋ณด๋ฅผ ์ ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

# MAINTAINER <name>

MAINTAINER name@gmail.com


COPY

ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์Šค๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.ย target ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

# COPY [--chown=<user>:<group>] <src>... <dest>
# COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]

COPY . /usr/src/app


ADD

COPY ๋ช…๋ น์–ด์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‚˜ ๋ช‡๊ฐ€์ง€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.ย src ์— ํŒŒ์ผ ๋Œ€์‹  URL์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ณ ย src ์— ์••์ถ• ํŒŒ์ผ์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์••์ถ•์„ ํ•ด์ œํ•˜๋ฉด์„œ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.

# ADD [--chown=<user>:<group>] [--checksum=<checksum>] <src>... <dest>
# ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]

ADD . /usr/src/app


RUN

๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœย /bin/sh -cย ๋’ค์— ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

# RUN <command>
RUN npm install --silent

# RUN ["executable", "param1", "param2"]
RUN ["/bin/bash", "-c", "echo hello"]

# ๋ฉ€ํ‹ฐ๋ผ์ธ
RUN /bin/bash -c 'source $HOME/.bashrc && \
echo $HOME'


ENTRYPOINT

ENTRYPOINTย ๋ช…๋ น๋ฌธ์€ ์ด๋ฏธ์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋„์šธ ๋•Œ ํ•ญ์ƒ ์‹คํ–‰๋˜์•ผ ํ•˜๋Š” ์ปค๋งจ๋“œ๋ฅผ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ENTRYPOINTย ๋ช…๋ น๋ฌธ์€ Docker ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์น˜ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋œฐ ๋•Œย ENTRYPOINTย ๋ช…๋ น๋ฌธ์œผ๋กœ ์ง€์ •๋œ ์ปค๋งจ๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ , ์ด ์ปค๋งจ๋“œ๋กœ ์‹คํ–‰๋œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃฝ์„ ๋•Œ, ์ปจํ…Œ์ด๋„ˆ๋กœ ๋”ฐ๋ผ์„œ ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

# ENTRYPOINT ["<์ปค๋งจ๋“œ>", "<ํŒŒ๋ผ๋ฏธํ„ฐ1>", "<ํŒŒ๋ผ๋ฏธํ„ฐ2>"]
# ENTRYPOINT <์ „์ฒด ์ปค๋งจ๋“œ>
ENTRYPOINT ["npm", "start"]


CMD

Dockerfile์—๋Š” ํ•˜๋‚˜์˜ CMD ๋ช…๋ น์–ด๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ์ด์ƒ์˜ CMD๋ฅผ ๋‚˜์—ดํ•˜๋ฉด ๋งˆ์ง€๋ง‰ CMD๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

CMD์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์‹คํ–‰ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. CMDย ๋ช…๋ น๋ฌธ์€ ๋งŽ์€๊ฒฝ์šฐ ENTRYPOINT ๋ช…๋ น๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ,ย ENTRYPOINTย ๋ช…๋ น๋ฌธ์œผ๋กœ๋Š” ์ปค๋งจ๋“œ๋ฅผ ์ง€์ •ํ•˜๊ณ ,ย CMDย ๋ช…๋ น๋ฌธ์œผ๋กœ ๋””ํดํŠธ ํŒŒ๋ฆฌ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋งค์šฐ ์œ ์—ฐํ•˜๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

CMD ["executable","param1","param2"]
CMD command param1 param2
CMD bundle exec ruby app.rb


WORKDIR

RUN, CMD, ADD, COPY๋“ฑ์ด ์ด๋ฃจ์–ด์งˆ ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ช…๋ น์–ด์˜ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํ•œ ์ค„ ํ•œ ์ค„๋งˆ๋‹ค ์ดˆ๊ธฐํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์—ย RUN cd /path ๋ฅผ ํ•˜๋”๋ผ๋„ ๋‹ค์Œ ๋ช…๋ น์–ด์—์„  ๋‹ค์‹œ ์œ„์น˜๊ฐ€ ์ดˆ๊ธฐํ™” ๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๊ณ„์† ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•ด์„œย WORKDIR ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

WORKDIR /path/to/workdir


EXPOSE

๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”(Listen) ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ์˜ ํฌํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# EXPOSE <port> [<port>...]
# EXPOSE <ํฌํŠธ>/<ํ”„๋กœํ† ์ฝœ>

EXPOSE 4567
EXPOSE 9999/udp

์ฐธ๊ณ 

EXPOSEย ๋ช…๋ น๋ฌธ์œผ๋กœ ์ง€์ •๋œ ํฌํŠธ๋Š” ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์œ ํšจํ•˜๋ฉฐ, ํ˜ธ์ŠคํŠธ(host) ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ด ํฌํŠธ๋ฅผ ๋ฐ”๋กœ ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ๋กœ๋ถ€ํ„ฐ ํ•ด๋‹น ํฌํŠธ๋กœ์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด,ย docker runย ์ปค๋งจ๋“œ๋ฅผย -pย ์˜ต์…˜์„ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ํŠน์ • ํฌํŠธ๋ฅผ ํฌ์›Œ๋”ฉ(forwarding)์‹œ์ผœ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.


VOLUME

์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์— ํŒŒ์ผ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

VOLUME ["/data"]


ENV

์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œย -e ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ๊ฐ’์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

# ENV <key> <value>
# ENV <key>=<value> ...
ENV DB_URL mysql


ARG

ARGย ๋ช…๋ น๋ฌธ์€ย docker buildย ์ปค๋งจ๋“œ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ ์‹œ,ย --build-argย ์˜ต์…˜์„ ํ†ตํ•ด ๋„˜๊ธธ ์ˆ˜ ์žˆ๋Š” ์ธ์ž๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

# ์˜ˆ๋ฅผ ๋“ค์–ด, Dockerfile์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ARG ๋ช…๋ น๋ฌธ์œผ๋กœ port๋ฅผ ์ธ์ž๋กœ ์„ ์–ธํ•ด์ฃผ๋ฉด
ARG port

# ๋‹ค์Œ๊ณผ ๊ฐ™์ด docker build ์ปค๋งจ๋“œ์— --build-arg ์˜ต์…˜์— port ๊ฐ’์„ ๋„˜๊ธธ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
$ docker build --build-arg port=8080 .



# ์ธ์ž์˜ ๋””ํดํŠธ๊ฐ’์„ ์ง€์ •ํ•ด์ฃผ๋ฉด, --build-arg ์˜ต์…˜์œผ๋กœ ํ•ด๋‹น ์ธ์ž๊ฐ€ ๋„˜์–ด์˜ค์ง€ ์•Š์•˜์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
ARG port=8080

# ์„ค์ •๋œ ์ธ์ž ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ${์ธ์ž๋ช…} ํ˜•ํƒœ๋กœ ์ฝ์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
CMD start.sh -h 127.0.0.1 -p ${port}

์ฐธ๊ณ 

ENV ์™€ ๋‹ฌ๋ฆฌย ARG ๋กœ ์„ค์ •ํ•œ ๊ฐ’์€ ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋˜๋Š” ๋™์•ˆ์—๋งŒ ์œ ํšจ


.dockerignore ํŒŒ์ผ

Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์ œ์™ธ ์‹œํ‚ค๊ณ  ์‹ถ์€ ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด,ย .dockerignoreย ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

# .dockerignore\
# ์ œ์™ธ ํ•  ํŒŒ์ผ์„ ์ž‘์„ฑ
.git
*.md


์ •๋ฆฌ

๋ช…๋ น์–ด ์šฉ๋„
FROM base ์ด๋ฏธ์ง€ ์„ค์ •
WORKDIR ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ค์ •
RUN ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์‹œ ์ปค๋งจ๋“œ ์‹คํ–‰
ENTRYPOINT ์ด๋ฏธ์ง€ ์‹คํ–‰ ์‹œ ํ•ญ์ƒ ์‹คํ–‰๋˜์•ผ ํ•˜๋Š” ์ปค๋งจ๋“œ ์„ค์ •
CMD ์ด๋ฏธ์ง€ ์‹คํ–‰ ์‹œ ๋””ํดํŠธ ์ปค๋งจ๋“œ ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •
EXPOSE ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฆฌ์Šค๋‹ํ•  ํฌํŠธ ๋ฐ ํ”„๋กœํ† ์ฝœ ์„ค์ •
COPY/ADD ์ด๋ฏธ์ง€์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณต์‚ฌ
ENV ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
ARG ๋นŒ๋“œ ์‹œ ๋„˜์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ธ์ž ์„ค์ •
VOLUME ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์— ํŒŒ์ผ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๋ ˆํผ๋Ÿฐ์Šค ์ฐธ๊ณ 

๐Ÿ™‡๐Ÿปโ€โ™‚๏ธ ์ฐธ๊ณ ์‚ฌ์ดํŠธ

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ