LoginSignup
0
0

More than 1 year has passed since last update.

Dockerのimage作成ファイル(dockerfile)の書き方メモ

Posted at

ちょくちょくDockerのイメージを作るためのDokcerfileを書くのですが毎回書き方を忘れるためメモとして残しておきます。

FROM

使うイメージを指定します。
指定方法は 以下の通り

# FROM: <イメージ名>:<タグ名>
FROM node:12

なおlinux/amd64のようにプラットフォームも指定できます。

COPY

localにあるファイルをイメージの中にコピーします。
自分がdocker化したいファイルやディレクトリを指定するときに使います。

# COPY: <ローカルでコピーするファイル> <コピーしたファイルの配置先>
COPY . /app

RUN

コマンドを実行する時に使います。注意点ですが、RUNで指定されたコマンドはイメージのビルド時に実行されます。
なので、アプリケーションサーバーの起動などのコマンドを実行したら永遠にイメージビルドが終わらなくなります。

# RUN コマンド
RUN apt-get update

CMD

コマンド実行する時に使います。CMDは完成したイメージからコンテナを作成し実行するときにコマンドが走ります。
なので、アプリケーションサーバーの起動など、コンテナが作成されてから即座に動いて欲しいコマンドを記載します。

# CMD ["<コマンド1>","<コマンド2>",...]
CMD ["apt-get", "update"]

WORKDIR

RUN,CMDなどに記載されたコマンドを実行する際に、どのディレクトリで実行するかを指定します。

# WORKDIR 絶対パス
WORLDIR /app

ENV

文字通り環境変数を指定します

# ENV <key>=<value>
ENV NODE_VERSION=12

EXPOSE

指定したポートを開けます。プロトコルを指定することもできます。

# EXPOSE <port> [<port>/<protocol>...]
EXPOSE 3333
EXPOSE 3333/udp

特定ファイルをビルド対象から外す

.dockerignoreというファイルを作れば、ビルドする際にそのファイルを除外できます。

例えば、npmにあるnode_modulesなどをCOPYに含めておくと、ローカルのOSとイメージのOSが違う場合エラーになる場合があります。
このような場合に、特定のファイルやディレクトリを除外するときに使います。

# comment
*/temp*
*/*/temp*
temp?

docker-composeのイメージ指定

本筋からそれますが、docker-composeでイメージを指定する際に、dockerfileを指定できて便利なので記載しておきます

version: "2.4"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1

contextでディレクトリを指定し、dockerfileでdockerfileのファイル名を指定します。

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