====== CentOS8 + MySQL8.0 の Docker Compose 作成例 ====== Laravel を載せる用の CentOS8 の 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 └ 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 app: container_name: project_name_app build: ./app/ image: laravel_centos8_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:8 RUN export LC_ALL=C && \ dnf -y update && \ dnf -y install httpd && \ dnf -y install epel-release && \ dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && \ dnf -y install http://ftp.riken.jp/Linux/remi/enterprise/remi-release-8.rpm && \ dnf module -y install php:remi-7.4 && \ dnf -y install php-pdo php-json php-xml php-mysqlnd php-gd php-mbstring && \ dnf -y install @mysql:8.0 && \ dnf -y install ibus-kkc && \ dnf -y install langpacks-ja && \ curl -sL https://rpm.nodesource.com/setup_14.x | bash - && \ dnf -y install nodejs ENV LANG ja_JP.UTF-8 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 export LANG=ja_JP.utf8 && \ 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 && \ export LC_ALL=ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 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 のインストール]]