dockerコマンドまとめ
dockerコマンド一覧
laradock ディレクトリ内の env-example を cp コマンドでコピーし .env を作成
cp env-example .env
docker-compose.ymlに記載された内容を元に、イメージを構築する。補足として、イメージとコンテナの違いを説明する。イメージとは、nginx:alpineと言った動作環境のテンプレートである。コンテナとは、ホストPCとは分離された仮想空間で実行されているプロセスのことである。
docker-compose build
バックグラウンドでコンテナを起動するため、同じターミナル上で作業を継続できる。「docker-compose up」でもコンテナ起動ができるが、コマンドを実行したターミナル上で起動しているため、別作業を行うことはできない。
docker-compose up -d
composerとは、PHPのライブラリを利用する際に考慮すべき依存関係を管理するためのツールである。composer installを実行することで、composer.jsonに記載されたライブラリをインストールできる。
docker-compose exec app composer install
アプリケーションキーを生成する。アプリケーションキーとは、暗号化の際に必要なランダムな英数字32文字である。こちらを実行すると、.enbにAPP_KEY=base64:xxxxが埋め込まれる。
質問:APP_KEYを生成する目的
docker-compose exec app php artisan key:generate
docker-compose buildとup -dの流れ
- まず、必要な構成ファイルをdocker-compose.ymlとして作成
- 次に、docker-compose.ymlからコンテナを動作するために必要なスナップショットを生成する。docker-compose buildにより、動作に必要なdockerイメージが生成される。dockerイメージは、あくまでコンテナ起動前の静的な状態となる。
- 最後に、生成されたdockerイメージをもとに、docker runでイメージを起動しコンテナが実行される。実行状態のインスタンスをコンテナという。
docker-compose up / docker runの違い
docker-compose upは複数コンテナを起動する。一方で、docker runは単一コンテナを起動する。簡略化しているが、下記のようにapp, webserver, dbと三つのコンテナが必要である。この際、密全てを同時に起動できるのがdocker-compose upで、一つのコンテナを起動するのがdocker runである。
#PHP Service
app:
build:
context: .
dockerfile: ./docker/php/Dockerfile
image: digitalocean.com/php
container_name: app
#Nginx Service
webserver:
image: nginx:alpine
container_name: webserver
restart: unless-stopped
#MySQL Service
db:
image: mysql:8.0.26
container_name: db
restart: unless-stopped
tty: true
ports:
- "3306:3306"
参考文献
サービスのビルドを実行します。
サービスとは「web」や「db」のことを指します。ymlファイルにimage:が書かれている場合はそのイメージ名がローカルになければ、リモートからプルしてきます。imageが書かれていない場合、buildに書かれているパスの(デフォルトは)Dockerfileを参考にしてイメージを構築します。
Discussion