Dockerfileの基本について

見本

FROM debian:latest

ENV APACHE_CONFDIR=/etc/apache2
ENV APACHE_ENVVARS=$APACHE_CONFDIR/envvars

WORKDIR /var/www/html

RUN apt-get update \
    && apt-get install -y apache2

COPY index.html /var/www/html/

CMD [ "apachectl", "-D", "FOREGROUND" ]
# ENTRYPOINT [ "echo", "default" ]
# CMD [ "addaaa" ]

FROM ベースイメージの指定

FROM debian:latest

FROM イメージ名:タグ名

docker hub でほしいイメージを手に入れるかも

COPY ローカルのファイルをコンテナにコピー

COPY index.html /var/www/html/

ローカルにあるファイルをコンテナにコピーする

RUN パッケージなどのインストールのコマンドの実行

RUN apt-get update \
 && apt-get install -y apache2

上記を下記のようにかけますがお勧めしません。理由はRUNの数が多いほどビルド後のイメージサイズが大きくなりがち

RUN apt-get update
RUN apt-get install -y apache2

WORKDIR コンテナのデフォルトディレクトリの指定

WORKDIR /var/www/html

コンテナにログインした時のデフォルトディレクトリになる

ENV 環境変数

ENV APACHE_CONFDIR=/etc/apache2
ENV APACHE_ENVVARS=$APACHE_CONFDIR/envvars

環境変数を設定できます

主に知られては困るアカウントやパスワードなどを設定する時に有効です。

またここで設定した環境変数は自身のDockerfile内で使える
更にコンテナの中でも使える

例えばENV APACHE_CONFDIR=/etc/apache2の設定をコンテナにアクセスした後
echo APACHE_CONFDIRを実行すると

/etc/apache2が表示される

CMD コマンド実行

CMD [ “apachectl”, “-D”, “FOREGROUND” ]

コンテナ立ち上げ後、デフォルトで実行したいコマンドになります。

docker container run で引数を指定すると、CMDで書いたコマンドがまるっと上書きされて実行されます。

ENTRYPOINT デフォルトコマンドの設定

ENTRYPOINT [ “echo”, “default” ]

コンテナ立ち上げ後、必ず実行したいコマンドを記述する

docker container run serviceName を実行すると

echo defaultが実装され、defaultが表示されます。
が、docker container run serviceName abcにすれば
default abcが表示されます。

またENTRYPOINTの次にCMDを設定した場合
CMDで設定した内容がENTRYPOINTのオプションになります。

ENTRYPOINT [ “echo”, “default” ]
CMD [ “addaaa” ]

上記の場合、default addaaaが表示されます。

コメント

タイトルとURLをコピーしました