ユーザ用ツール

サイト用ツール


ソフトウェア:docker:docker-compose.yml_dockerfile_作成例:centos7_mysql8.0

CentOS7 + MySQL8.0 の Docker Compose 作成例

Laravel を載せる用の CentOS7 の app コンテナと、MySQL8.0 の db コンテナを作成する例。

ディレクトリ構成

  1. project
  2. docker
  3. app
  4. conf
  5. html.conf
  6. php74.ini
  7. conf.d
  8. charset.cnf
  9. Dockerfile
  10. db
  11. conf.d
  12. charset.cnf
  13. Dockerfile
  14. docker-compose.yml
  15. mysql_data // db コンテナの mysql データが保存される
  16. production // app コンテナに載せるプログラムファイルを格納

docker/docker-compose.yml

  1. version: '3'
  2. services:
  3. db:
  4. container_name: project_name_db
  5. build: ./db/
  6. image: laravel_mysql80_db
  7. environment:
  8. MYSQL_ROOT_PASSWORD: pass
  9. MYSQL_DATABASE: laravel_db
  10. MYSQL_USER: docker
  11. MYSQL_PASSWORD: docker
  12. TZ: 'Asia/Tokyo'
  13. ports:
  14. - 3306:3306
  15. volumes:
  16. - ../mysql_data:/var/lib/mysql
  17. app:
  18. container_name: project_name_app
  19. build: ./app/
  20. image: laravel_centos7_php74_app
  21. ports:
  22. - 8080:80
  23. volumes:
  24. - ../production:/var/www/production/
  25. tty: true
  26. stdin_open: true
  27. privileged: true
  28. command: /sbin/init
  29. depends_on:
  30. - db

docker/app/Dockerfile

  1. FROM centos:7
  2.  
  3. RUN yum -y update && \
  4. yum -y install httpd && \
  5. yum -y install epel-release && \
  6. yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && \
  7. 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 && \
  8. yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm && \
  9. yum -y install --enablerepo=mysql80-community mysql-community-server && \
  10. yum -y install zip unzip && \
  11. yum -y install crontabs && \
  12. yum -y install less && \
  13. curl -sL https://rpm.nodesource.com/setup_14.x | bash - && \
  14. yum -y install nodejs
  15.  
  16. ENV LANG ja_JP.UTF-8 \
  17. LANGUAGE ja_JP:ja
  18.  
  19. COPY ./conf/html.conf /etc/httpd/conf.d/html.conf
  20. COPY ./conf/php74.ini /etc/php.ini
  21. COPY ./conf.d/charset.cnf /etc/my.cnf.d/charset.cnf
  22.  
  23. RUN chmod 644 /etc/httpd/conf.d/html.conf && \
  24. mkdir /var/log/php && \
  25. chown apache:apache /var/log/php && \
  26. rm -rf /var/www/html && \
  27. ln -s /var/www/production/public /var/www/html
  28.  
  29. # httpd
  30. RUN systemctl enable httpd

docker/app/conf/html.conf

  1. <Directory "/var/www/html">
  2. Options Indexes FollowSymLinks
  3. AllowOverride All
  4. Require all granted
  5. </Directory>

docker/app/conf/php74.ini

対応バージョンの php.ini をどこかからコピーしてきて、設定したい内容に書き換えて設置

docker/app/conf.d/charset.cnf

  1. [mysqld]
  2. character-set-server = utf8mb4
  3. collation-server = utf8mb4_bin
  4. init-connect='set names utf8'
  5.  
  6. [client]
  7. loose-default-character-set = utf8mb4

docker/db/Dockerfile

  1. FROM mysql:8.0
  2.  
  3. RUN apt-get update && \
  4. apt-get -y install locales-all
  5.  
  6. ENV LANG ja_JP.UTF-8 \
  7. LANGUAGE ja_JP:ja
  8.  
  9. COPY ./conf.d/charset.cnf /etc/my.cnf.d/charset.cnf

docker/db/conf.d/charset.cnf

  1. [mysqld]
  2. character-set-server = utf8mb4
  3. collation-server = utf8mb4_bin
  4. init-connect='set names utf8'
  5.  
  6. [client]
  7. loose-default-character-set = utf8mb4

コマンドの実行

Docker Quickstart Terminal を起動する。

  1. # project/docker ディレクトリへ移動
  2. cd project/docker
  3.  
  4. # コンテナの作成&起動
  5. # -d をつけることでバックグラウンドでコンテナを起動
  6. # --build をつけることでイメージを作成
  7. docker-compose up -d --build
  8.  
  9. # コンテナの一覧を確認
  10. docker-compose ps
  11.  
  12. # IP アドレスを調べる
  13. docker-machine ip
  14.  
  15. # 192.168.99.100 なら、以下でアクセス可能になる
  16. # http://192.168.99.100:8080
  17.  
  18. # 2回め以降は、バックグラウンドでコンテナを起動するだけでよい
  19. docker-compose up -d
  20.  
  21. # app コンテナに入り作業をする
  22. docker container exec -it project_name_app /bin/bash
  23.  
  24. # マウントした production に移動
  25. cd /var/www/production/
  26.  
  27. # production ディレクトリ内のファイルが共有されているか確認
  28. ls -l
  29.  
  30. # db コンテナの DB に接続できるか確認
  31. mysql -h project_name_db --port 3306 -u docker -pdocker -D laravel_db

これでローカルで Laravel を動かすための環境が整いました。
次は Laravel のインストールを行います。
Laravel 7 のインストール

コメント

コメントを入力. Wiki文法が有効です:
 
ソフトウェア/docker/docker-compose.yml_dockerfile_作成例/centos7_mysql8.0.txt · 最終更新: 2021/10/01 11:40 by humolife