====== CentOS7 + MySQL8.0 の Docker Compose 作成例 ======
Laravel を載せる用の CentOS7 の app コンテナと、MySQL8.0 の db コンテナを作成する例。
===== ディレクトリ構成 =====
project
├ docker
│ ├ app
│ │ ├ conf
│ │ │ ├ html.conf
│ │ │ └ php74.ini
│ │ ├ conf.d
│ │ │ └ charset.cnf
│ │ └ Dockerfile
│ ├ db
│ │ ├ conf.d
│ │ │ └ charset.cnf
│ │ └ Dockerfile
│ └ docker-compose.yml
├ mysql_data // db コンテナの mysql データが保存される
└ production // app コンテナに載せるプログラムファイルを格納
===== docker/docker-compose.yml =====
version: '3'
services:
db:
container_name: project_name_db
build: ./db/
image: laravel_mysql80_db
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: laravel_db
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: 'Asia/Tokyo'
ports:
- 3306:3306
volumes:
- ../mysql_data:/var/lib/mysql
app:
container_name: project_name_app
build: ./app/
image: laravel_centos7_php74_app
ports:
- 8080:80
volumes:
- ../production:/var/www/production/
tty: true
stdin_open: true
privileged: true
command: /sbin/init
depends_on:
- db
===== docker/app/Dockerfile =====
FROM centos:7
RUN yum -y update && \
yum -y install httpd && \
yum -y install epel-release && \
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && \
yum -y install --enablerepo=remi,remi-php74 php php-devel php-mbstring php-pdo php-gd php-xml php-mysqlnd php-bcmath php-json php-pecl-zip php-imap && \
yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm && \
yum -y install --enablerepo=mysql80-community mysql-community-server && \
yum -y install zip unzip && \
yum -y install crontabs && \
yum -y install less && \
curl -sL https://rpm.nodesource.com/setup_14.x | bash - && \
yum -y install nodejs
ENV LANG ja_JP.UTF-8 \
LANGUAGE ja_JP:ja
COPY ./conf/html.conf /etc/httpd/conf.d/html.conf
COPY ./conf/php74.ini /etc/php.ini
COPY ./conf.d/charset.cnf /etc/my.cnf.d/charset.cnf
RUN chmod 644 /etc/httpd/conf.d/html.conf && \
mkdir /var/log/php && \
chown apache:apache /var/log/php && \
rm -rf /var/www/html && \
ln -s /var/www/production/public /var/www/html
# httpd
RUN systemctl enable httpd
===== docker/app/conf/html.conf =====
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
===== docker/app/conf/php74.ini =====
対応バージョンの php.ini をどこかからコピーしてきて、設定したい内容に書き換えて設置
===== docker/app/conf.d/charset.cnf =====
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_bin
init-connect='set names utf8'
[client]
loose-default-character-set = utf8mb4
===== docker/db/Dockerfile =====
FROM mysql:8.0
RUN apt-get update && \
apt-get -y install locales-all
ENV LANG ja_JP.UTF-8 \
LANGUAGE ja_JP:ja
COPY ./conf.d/charset.cnf /etc/my.cnf.d/charset.cnf
===== docker/db/conf.d/charset.cnf =====
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_bin
init-connect='set names utf8'
[client]
loose-default-character-set = utf8mb4
===== コマンドの実行 =====
Docker Quickstart Terminal を起動する。
# project/docker ディレクトリへ移動
cd project/docker
# コンテナの作成&起動
# -d をつけることでバックグラウンドでコンテナを起動
# --build をつけることでイメージを作成
docker-compose up -d --build
# コンテナの一覧を確認
docker-compose ps
# IP アドレスを調べる
docker-machine ip
# 192.168.99.100 なら、以下でアクセス可能になる
# http://192.168.99.100:8080
# 2回め以降は、バックグラウンドでコンテナを起動するだけでよい
docker-compose up -d
# app コンテナに入り作業をする
docker container exec -it project_name_app /bin/bash
# マウントした production に移動
cd /var/www/production/
# production ディレクトリ内のファイルが共有されているか確認
ls -l
# db コンテナの DB に接続できるか確認
mysql -h project_name_db --port 3306 -u docker -pdocker -D laravel_db
これでローカルで Laravel を動かすための環境が整いました。\\
次は Laravel のインストールを行います。\\
⇒ [[プログラム言語:php:laravel:インストール:laravel7|Laravel 7 のインストール]]