🚀

dockerコマンドまとめ

2022/12/28に公開

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"

参考文献

https://qiita.com/HorikawaTokiya/items/fbe5b7c27ea1c0209e3c
https://qiita.com/hayatoise/items/fca6008941dba169a485
https://qiita.com/wasanx25/items/d47caf37b79e855af95f
https://and-engineer.com/articles/YaSPjRIAACAAkhMI
https://webukatu.com/wordpress/blog/39636/#:~:text=composerとは、PHPの,機能を持っています。
https://qiita.com/reflet/items/76ce4d7743c7d9a8a963
https://qiita.com/yk2220s/items/dcbf54c6d1f33a0cb06f

サービスのビルドを実行します。
サービスとは「web」や「db」のことを指します。ymlファイルにimage:が書かれている場合はそのイメージ名がローカルになければ、リモートからプルしてきます。imageが書かれていない場合、buildに書かれているパスの(デフォルトは)Dockerfileを参考にしてイメージを構築します。

Discussion