Docker ~ローカルで環境構築~ 

前回の記事でDockerの概要について書いてみました。今回は実際に自分が作っているLaravelのポートフォリオのローカル環境にDockerを実装していく流れを見ていきたいと思います!

正直Dockerは実装が終了するまで本質的な部分があまり理解が追い付かず、難しくて苦戦しました!しかしっ!!振り返ってみると、とても便利なシステムであり、実装するなかで学びが沢山ありました。

ローカルでDockerを実装する流れ

  1. コンテナの構成を考える
  2. docker-compose.ymlをつくる
  3. docker-composeコマンドを実行
  4. Laravelのマイグレーションを実行する。

コンテナの構成を考える

アプリケーションを動かすコンテナの構成は以下の3つを用意します。ディレクトリ構成はアプリケーションディレクトリの直下にDockerディレクトリを作り、その中に各コンテナをつくる3つのディレクトリをつくりDockerfileとconfigfile,inifile等の設定ファイルを用意しました。

appコンテナ

Laravel,PHPを動かすコンテナ。php7.4のベースイメージを使用。

webコンテナ

webサーバーとなるコンテナ、HTTPリクエストを受けたら受け取るコンテナ。
nginxベースイメージを使用。

dbコンテナ

データベースのサーバーとなるコンテナ、mysqlベースイメージを使用。

docker-compose.ymlファイルを作る

同じくアプリケーションフォルダの直下にdocker-composeファイルを用意します。

Dockerfileではイメージの作成手順(ベースイメージの指定等)を書いて、docker-composeファイルではDockerfileをベースとして、どのようにコンテナを起動させるのか書きます。

version: "3.8"
volumes:
  php-fpm-socket:
  db-store:
services:
  app:
    build:
      context: .
      dockerfile: ./docker/php/Dockerfile
    volumes:
      - php-fpm-socket:/var/run/php-fpm
      - .:/work/backend
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_PORT=3306
      - DB_DATABASE=ask_form
      - DB_USERNAME=XXXXXXXX
      - DB_PASSWORD=XXXXXXXX

  web:
    build:
      context: .
      dockerfile: ./docker/nginx/Dockerfile
    ports:
      - 80:80
    volumes:
      - php-fpm-socket:/var/run/php-fpm
      - .:/work/backend

  db:
    build:
      context: .
      dockerfile: ./docker/mysql/Dockerfile
    ports:
      - 3306:3306
    volumes:
      - db-store:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=ask_form
      - MYSQL_USER=XXXXXX
      - MYSQL_PASSWORD=XXXXXX
      - MYSQL_ROOT_PASSWORD=${DB_PASS:-secret}

services

構成するコンテナを書きます。今回はapp,web,dbの3つ。

build

イメージのビルド方法を書きます。イメージの詳細を書いたDockerfileの場所を書きます。

ports

ホスト側(自分)とコンテナ側をどの番号で接続するのか。
ホスト:コンテナ

ホスト側のポート番号は自由に指定することができるがデフォルトで指定されている番号を使用するのが良い。
webサーバー(TCP/http) 80番
db(mysql) 3306

volumes

ホスト側のデータをコンテナ側のどのディレクトリに置くのか書きます。

enviroment

環境変数を定義する。環境変数とはそれぞれのコンテナで定義する設定値の総称を指します。

docker-composeコマンドを実行

ここまで来るのも一苦労です。笑
あともう少し!
コマンド画面を開いて、アプリのディレクトリへ移動して

docker-compose build

これでイメージがビルドされます。

docker-compose up 

これでコンテナが構築され、起動されます。ブラウザで表示されるか確認します。

Laravelのマイグレーションを実行する。

現状ではdbには接続されていますが、テーブルが作られていない状態なのでマイグレーションコマンドを実行します。

docker-compose exec app php artisan migrate

これでローカルでdockerを使ってアプリを起動させることが出来ます!!

by
関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です