LoginSignup
0
0

More than 1 year has passed since last update.

dockerfileのコマンドまとめmemo

Last updated at Posted at 2022-11-25

概要:point_up:

dokcerfileのコマンドについて調べたことをまとめる

コマンド各種:eyes:

FROM

ベースイメージとなるdockerImageを指定する
DockerHubのイメージを指定するのが一般的

FROM php:8.0-fpm-alpine

ENV

docker内に環境変数を設置する

ENV LANG ja_JP.UTF-8

COPY

ホスト側のファイル・ディレクトリを
コンテナ側へコピーする

COPY . /app

WORKDIR

Dockerfileでコマンドを実行する際に基準となるディレクトリを設定
存在しないディレクトリを指定するとディレクトリが作成される
デフォルトは /

WORKDIR /app

RUN

Docker内でコマンドを実行する
この時複数ある場合は連続して実行すると
中間イメージというものが作成されず、イメージサイズを小さくすることができる。

RUN apk update && \
    apk add --no-cache --virtual .php-builds oniguruma-dev postgresql-dev nodejs npm git curl zip unzip && \
    npm install npm@latest -g

USER

コンテナにログインするユーザーを指定する
デフォルトはroot

USER app

CMD

コンテナ起動時にデフォルトで実行されるコマンドを設定する
コンテナはここで設定したコマンドがフォアグラウントで実行されている間が生存期間となる。
バックグラウンドで実行するとコンテナプロセスが終了する。
そのためフォアグラウンドで実行するように設定する。

CMD ["npm", "run", "start"]

EXPOSE

コンテナ起動時に公開するポート番号を指定する。

EXPOSE 80

ホスト側とコンテナのポートを紐付けは

$ docker run -p 80:80

VOLUME

Data Volumeを作成する
build時にボリュームが作成される。

VOLUME ["/app"]

AWS ECSの場合の挙動

タスク実行時にDockerfileのファイルをデータボリュームに公開するために、
AmazonECSデータプレーンがVOLUMEディレクトリを探します。VOLUMEディレクティブで指定された絶対バスが、タスク定義で指定されたcontainerPathを同じである場合、VOLUMEディレクティブパス内のデータがデータボリュームにコピーされる。次のDockerfileの例では、/var/log/exportディレクトリにあるexamplefileという名前のファイルがホストに書き込まれ、その後コンテナ内にマウントされる。

FROM public.ecr.aws/amazonlinux/amazonlinux:latest
RUN mkdir -p /var/log/exported
RUN touch /var/log/exported/examplefile
VOLUME ["/var/log/exported"]

ENTRYPOINT

指定されたコマンドを実行する
CMDと違うのはdocker run 時に指定した引数を渡すことができる

ENTRYPOINT ["echo"]
$ docker run <IMAGE NAME> "hogehoge"
hogehoge

dockerImage

コンテナイメージはdockerfileの1行ごとがレイアーとなっている。
イメージとしてはスナップショットという感じでしょうか?

$ docker history イメージ名
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
6af75be42b5f   6 hours ago   WORKDIR /app                                    0B        buildkit.dockerfile.v0
<missing>      6 hours ago   COPY /usr/bin/composer /usr/bin/composer # b…   2.81MB    buildkit.dockerfile.v0
<missing>      6 hours ago   COPY ./sample /app # buildkit                   48.1MB    buildkit.dockerfile.v0
<missing>      9 days ago    RUN /bin/sh -c docker-php-ext-install mbstri…   2.18MB    buildkit.dockerfile.v0
<missing>      9 days ago    RUN /bin/sh -c apk update &&     apk add --n…   386MB     buildkit.dockerfile.v0
<missing>      9 days ago    ENV COMPOSER_NO_INTERACTION=1                   0B        buildkit.dockerfile.v0

こんな感じでレイアーを確認することができる。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0