コンテナ
仮想環境そのもの。
イメージ
Dockerコンテナを実行する際に必要なもの。
Dockerfile
Dockerのイメージを自動で作成してくれるファイル。
Docker compose
複数のコンテナからなるサービスを構築、実行する手順を自動的にし、管理を用意にする機能。docker compose hogehoge
というコマンドを実行することで、そのファイルから設定を読みこんえ全てのコンテナを起動することができる。
Dockerfileの中身でよく使われるコマンド
FROM
使用するイメージとバージョン
エラー以外何も吐かないようにする
-y
全てyesで実行する設定。これなしだと途中で止まってしまうので自動的でイエスで進んでもらうために必要。
RUN
コマンドの実行
WORKDIR
作業ディレクトリ先の設定
COPY
コピー元とコピー先のファイルまたはディレクトリを指定
docker-compose.ymlで使われるコマンド
service
アプリケーションを動かすための各要素のこと。
通常はwebとdb(Mysql、Postgresql)と名前をつける。
rm -f tmp/pids/server.pid
pidはプロセスIDのこと。pidはそもそも開発用サーバーを起動するときにtmp/pids/server.pidに書き込まれる。終了するときにserver.pidが削除される。
server.pidが書かれているとサーバーが起動中と判断される。rails sが実行できないときにserver.pidを削除するとうまくいく可能性がある。終了する際にはrmによって削除する必要がある。
ports
ports:
- "3000:3000"
コンテナ内のポート3000番をホストの3000番にマッピングする。コンテナ内に立てたサーバにhttp://localhost:3000でアクセスできるようになる。
これがないとコンテナにアクセスできない。
例えば、下記のようにするとhttp://localhost:3001でコンテナ内に立てたサーバにアクセスできる。
ports:
- "3001:3000"
volumes
volumes:
- ./db/mysql/volumes:var/lib/mysql
データを永続化するためにある。
コンテナは消すことができるが、仮装環境を捨ててしまうとデータベースも一緒に破棄されてしまう。volumesを捨てるとデータを永続化することができる。
ホストの./db/mysql/volumesをコンテナ内の/var/lib/mysqlにマウント(同期)するという意味。
Dockerのコンテナとローカルのファイルを同期している。つまりdockerのコンテナが破棄されてもローカルのファイルが残っているという事になる。
.がホストのディレクトリ全てを意味している。