はじめに
今まで、全然理解できていなくて逃げてたDockerに関して、しっかり理解していこうと思います。
コレまで、便利なんだろうなと思いながらも、逃げてました。
なので、開発環境では使いこなせるスキルにまでは理解したいと思います。
あと、暗記してたDockerコマンドを1つ1つ理解していきます。
以下のような順番で勉強していきます。
- Dockerの概要(1/9)
- Dockerの基本操作(イメージの作成, コンテナの起動, 停止, 削除)(2/9)
- Dockerの基本操作(ログの出力, コンテナの中でプロセスを実行する方法, 使用していない Docker オブジェクトの削除)(3/9)
-
Dockerfileを使用したサーバー構築(座学編)(4/9)
今ここ
- Dockerfileを使用したサーバー構築(実践編)(5/9)
- Docker Composeの概要(座学編)(6/9)
- Docker Composeのよく使う基本操作(7/9)
- Docker Composeを使ってRailsの環境を構築する(8/9)
- Docker上に構築したRailsをHeroku(本番環境)にデプロイ(公開)する(9/9)
学ぼう「Dockerfileを使用したサーバー構築」
Dockerでは、インフラの構成を記述したファイルのことをDockerfileと呼びます。
本記事では、Dockerfileの詳細について説明していきます。
Dockerfileとは
これまでは、主にコマンドを使ってDockerイメージの操作とコンテナを作成してきました(一応、簡単にDockerファイルも作りましたけどね)。
コマンド操作以外にも、Dockerfileを使うことで、ダウンロードしたベースのイメージに加えて、OSの設定やミドルウェアのインストールなどもできます。
Dockerfileには主に、以下のような内容を記述します。
- ベースになるDockerイメージ
- Dockerコンテナ内で行う操作(コマンド)
- 環境変数
- インストールするライブラリ
- Dockerコンテナ内で動作させておくデーモン
Dockerfileの基本構文
Dockerfileはテキスト形式のファイルになります。
なので、VScodeなどのテキストエディタで作成・編集が可能です。
拡張子は必要なく、「Dockerfile」という名前のファイルに、インフラの構成情報を書いていきます。
「Dockerfile」という名前じゃなくてもいいそうです(ややこしいので、Dockerfileにした方がいいと思います)。
Dockerfileの基本構文は以下のようになっています。
命令 引数
Dockerfileでの主な命令文は以下の表の通りです。
命令 | 説明 |
---|---|
FROM | ベースイメージの設定 |
WORKDIR | 作業ディレクトリ |
COPY | ファイルのコピー |
RUN | コマンド実行 |
CMD | コンテナの実行コマンド |
LABEL | ラベルを設定 |
EXPOSE | ポートのエクスポート |
ENV | 環境変数 |
ADD | ファイル/ディレクトリの追加 |
ENTRYPOINT | コンテナの実行コマンド |
VOLUME | ボリュームのマウント |
USER | ユーザーの指定 |
ARG | Dockerfile内の変数 |
ONBUILD | ビルド完了後に実行される命令 |
STOPSIGNAL | システムコールシグナルの設定 |
HEALTHCHECK | コンテナのヘルスチェック |
SHELL | デフォルトシェルの設定 |
Dockerfileの作成
Dockerfileでは、「どんなDockerイメージからDockerコンテナを生成するか」の情報を、必ず記述する必要があります。
このイメージをベースイメージと呼びます。
ベースイメージの書き方は以下のような感じです。
FROM [イメージ名]
FROM [イメージ名]:[タグ名]
FROMは必須項目になります。
例えば、
CentOSのバージョン7をベースイメージにしたい場合
以下のような書き方になります。
FROM centos:centos7
タグ名を省略した場合は、ベースイメージの最新バージョン(latest)が適用されます。
これで、サーバー構築(座学編)はおしまいです。
次回は、Rubyをベースイメージにして、
それを元にSinatora(Ruby製のWebアプリケーションフレームワーク)を導入して、
webサーバーを動かす環境をDockerfileで作る方法を学んでいきます。
アウトプット100本ノック実施中