Dockerfile
code:Dockerfile
FROM
Official Imageを用いるのがいい
COPY
ADDよりCOPYを使ったほうがいい
RUN
apt-upgrade、dist-upgradeを避ける
apt-get update、apt-get installを使う
code:Dockerfile
FROM: ubuntu:18.04
RUN apt-get update \
&& apt-get install -y curl nginx
CMD
CMD ["command", "argument 1", "argument 2"]
イメージに含むソフトウェアと引数のために使う
docker run時に実行される
docker run時にコマンドを指定したら実行されない
ENTRYPOINT
コンテナをコマンドのように実行したい場合に有用
docker run時に実行される
docker run時にコマンドを指定しても実行される
code:Dockerfile
FROM alpine
ENTRYPOINT ping
LABEL
EXPOSE
ポート開放
ENV
環境変数の定義
code:Dockerfile
ENV PATH /usr/local/nginx/bin:$PATH
VOLUME
マウント
USER
WORKDIR
cdではなくWORKDIRを使ったほうがわかりやすい
code:Dockerfile
..
RUN mkdir /work
WORKDIR /work
RUN touch hello.txt
ONBUILD
.dockerignore
背景: docker buildではDockerfileのディレクトリ以下にあるものがすべてDocker内にコピーされる
コピー対象から外したい大きなファイルを指定する
マルチステージビルド
複数のFROMを1つのDockerfileに記述できる
code:Dockerfile
FROM alpine as DEVELOPMENT
...
FROM alpine as PRODUCTION
...
$ docker build --target DEVELOPMENT
引数
\で複数行記述ができる
アルファベット順にする
code:Dockerfile
ENV TEXLIVE_DEPS \
alpine-sdk \
fontconfig-dev \
gmp-dev \
gnupg \
musl-dev \
pkgconfig \
tar \
xz \
zlib-dev
refs