13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

docker-composeでLaravel開発環境を構築する ~①docker-compose.ymlとフォルダ構成~

Last updated at Posted at 2023-03-28

はじめに

業務でLaravelの開発環境をdocker-composeで構築することがありました。
しかし詳しいことは全く知らなかったので、自分で1から作ってみようと思います。

環境はWEB(nginx)PHPDB(MySQL)サーバーの構成となります。

目次

 1. docker-compose.ymlについて
 2. 必要なディレクトリ、ファイルの準備 → 今回はここまで
 3. nginxコンテナの作成
 4. PHPコンテナの作成
 5. Laravelプロジェクトの作成
 6. MySQLコンテナの作成
 

docker-compose.ymlについて

docker-composeで複数のコンテナを起動する場合、Dockerfile(コンテナを起動するのに必要なDockerイメージの設計図となるもの)とは別に、複数のコンテナを定義するdocker-compose.ymlが必要となります。

docker-compose.yml
version: "3"
service:
  web:
    container_name: "web"
    build: "./web/Dockerfile"
    ports: 
      - "8080:80"
    volumes:
      - "../src:/var/www/html"
  php:
    ...

定義されている各項目について

項目 説明
version docker-composeのバージョンを指定
service 配下にコンテナを定義(上記の例で言うとwebphpがコンテナに当たる)
container_name コンテナ名を定義
build -コンテナ作成に使用するDockerfileのパスを指定
-コンテナ作成にDockerHubのイメージを使う場合はimage:イメージ名と定義
ports -ホストとコンテナのポート番号の対応付け(ポートフォワーディング)
-:を挟んで左がホスト側のポート、右がコンテナ側のポート
volumes -ホストとコンテナのvolumeをバインド
-:を挟んで左がホスト側のパス、右がコンテナ側のパス
  • 補足
    • パスについて
      • ホスト側のパスを定義する際は、誰が環境構築しても同じものができるように、相対パスで定義する
    • volumeについて
      • volumeとは、コンテナにおいて生成されるデータを永続的に保持する目的で利用される仕組み(ホスト側に保存される)
      • コンテナに保存したデータはコンテナを破棄すると消えるが、volumeに保存したデータはコンテナを削除しても残るので再利用できる

必要なディレクトリ、ファイルの準備

では、環境構築に必要なディレクトリ、ファイルを準備してプロジェクトを作成していきます。

1. ディレクトリを作成

プロジェクトディレクトリと、その中にdocker-composeに関するファイルを保存するディレクトリを用意します。

$ mkdir laravel
$ cd laravel
$ mkdir docker

2. docker-compose.ymlを作成

$ cd docker
$ touch docker-compose.yml

3. nginxコンテナ作成に必要なファイルを作成

nginxコンテナを作成するのに必要なDockerfileと、nginxの設定ファイルを用意します。(dockerディレクトリの配下)

$ mkdir web
$ cd web
$ touch Dockerfile
$ touch default.conf

4. PHPコンテナ作成に必要なファイルを作成

PHPコンテナを作成するのに必要なDockerfileと、PHPの設定ファイルを用意します。(dockerディレクトリの配下)

$ cd ../
$ mkdir php
$ cd php
$ touch Dockerfile
$ touch php.ini

5. MySQLコンテナ作成に必要なファイルを作成

MySQLコンテナを作成するのに必要なDockerfileと、MySQLの設定ファイルを用意します。(dockerディレクトリの配下)

$ cd ../
$ mkdir db
$ cd db
$ touch Dockerfile
$ touch my.conf

6. 最終的なフォルダ構成

laravel
├── 後ほど作成するLaravelプロジェクト
└── docker
    ├── docker-compose.yml
    ├── web
    │   ├── Dockerfile
    │   └── default.conf
    └── php
    │   ├── Dockerfile
    │   ├── php.ini
    └── db
        ├── Dockerfile
        └── my.conf

まとめ

以上で環境構築に必要なディレクトリとファイルの準備ができました!
次はnginxから順にコンテナを作成していきます!

13
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?