チャンプルーDocker環境(Rails+Laravel+MySQL)


はじめに

書くネタがなかったのでニッチかもしれませんが、タイトルの通りRails+Laravel+MySQLのDocker環境を構築してみました。突貫で構築したので所々至らぬ点や改善点があるかと思いますのでお手柔らかにアドバイス頂けると助かります
ちなみにチャンプルーとは沖縄の方言で『ごちゃまぜ』という意味です

環境

macOS Catalina 10.15.7
Docker 19.03.13
Compose 1.27.4
Rails 6.0.3(Ruby 2.7.0)
Laravel 7.30.0(PHP 7.2.34)

フォルダ構成

.
├── laravel_app
│   ├── laravel
│   │   ├── app
│   │   ...
│   └── Dockerfile
├── rails_app
│   ├── app
│   ├── bin
│   ...
│   └── Dockerfile
└── docker-compose.yml

Rails+MySQL環境

以前書いた記事を参考に構築しました
RubyをインストールせずにDockerでRails環境を構築する

※変更点としてはフォルダパス(rails_app)が変わっているのとサービス名をRailsLaravelでわかりやすいように変えています。あとはほとんど記事と同じ手順でRails+MySQL環境は構築出来ました

version: '3'
services:
  rails6:
    build: ./rails_app/
    environment:
      RAILS_ENV: development
      TZ: Asia/Tokyo
    ports:
      - '3000:3000'
    volumes:
      - ./rails_app/:/usr/src/app
    depends_on:
      - database

Laravel環境

まず、Laravel用のDockerfileを用意します。

laravel_app/Dockerfile
FROM php:7.2-fpm
# install composer
RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim
RUN apt-get update \
    && apt-get install -y libpq-dev \
    && docker-php-ext-install pdo_mysql pdo_pgsql
WORKDIR /var/www/html

次に、docker-compose.ymlにphpの部分を追記します。

docker-compose.yml
version: '3'
services:
  php:
    build: ./laravel_app/
    volumes:
      - ./laravel_app/:/var/www/html
    ports:
      - '8000:8000'
    depends_on:
      - database
  rails6:
...

ここで一度buildを行い、ComposerでLaravelプロジェクトを作成します。

$ docker-compose up -d --build
$ docker-compose exec php composer create-project --prefer-dist laravel/laravel ./laravel

これでlaravel_appフォルダ内にlaravelプロジェクトが作成されますのでMySQL接続情報を設定します。

laravel_app/laravel/.env
DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=app_development
DB_USERNAME=root
DB_PASSWORD=password

最後にLaravelのビルトインサーバを起動するコマンド(php artisan serve)をDockerfileに定義して完成です。

laravel_app/Dockerfile
FROM php:7.2-fpm
# install composer
RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim
RUN apt-get update \
    && apt-get install -y libpq-dev \
    && docker-php-ext-install pdo_mysql pdo_pgsql
WORKDIR /var/www/html/laravel
EXPOSE 8000
CMD ["php","artisan","serve","--host","0.0.0.0"]

それぞれhttp:localhost:3000とhttp:localhost:8000でアクセスして確認出来ます