Dockerfileの書き方


DockerfileはDockerイメージを作成するための定義ファイルです。docker buildコマンドでイメージを構築するための定義ファイルです。

😀 Dockerfileのサンプル

まずはRailsを使うためのDockerfileのサンプル。

# Dockerfile
FROM ruby:2.4.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev postgresql-client

RUN mkdir /app

# bundle install を高速化するための記述
WORKDIR /tmp
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install

ADD . /app
WORKDIR /app

CMD [bundle, exec, rails, server]

🤔 Dockerfileのコマンド

Dockerfileで使えるコマンドは次のような物があります。

コマンド名 説明
FROM ベースイメージの指定
RUN コマンドの実行
CMD docker runの際に起動するコマンド
ENTRYPOINT docker runの際に起動するコマンド
LABEL コンテナとイメージに付与できるラベル
EXPOSE コンテナ内のプロセスがListenするポート
ENV 環境変数
ADD/COPY ホストのOSからコンテナにファイルをコピーする
VOLUME 外部からマウント可能なボリューム
USER RUN, CMD, ENTRYPOINTを実行するユーザー
WORKDIR 作業ディレクトリ
ONBUILD 次のビルドで実行させるコマンド

🎉 Dockefileのコメント

#で始まる行はコメントとして処理されます。

# コメント

🐞 .dockerignoreファイル

.dockerignoreはDockerで無視するファイルを指定できるファイルです。

# コメント
*/temp*
*/*/temp*
temp?
`
  • # コメント : コメントとしてこの行を無視します
  • */temp* : tempで始まる名称のファイルとディレクトリを除外
  • */*/temp* : ルートから2つ下のディレクトリのtempで始まる名称のファイルとディレクトリを除外
  • temp? : tempに一致するファイルとディレクトリを除外 (例: /tempa)

😼 Alpineイメージ

Alpineはセキュアで軽量なLinuxのディストリビューションのひとつです。
musl libcとBusyBoxベースで、パッケージ管理にはAPKという独自のシステムを使っています。
こちらを使うとUbuntuなど使う場合に比べて、Dockerイメージのサイズを小さくできます。

🏀 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍