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 コンテナに載せるプログラムファイルを格納
- 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
- 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
- <Directory "/var/www/html">
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
- </Directory>
対応バージョンの php.ini をどこかからコピーしてきて、設定したい内容に書き換えて設置
- [mysqld]
- character-set-server = utf8mb4
- collation-server = utf8mb4_bin
- init-connect='set names utf8'
- [client]
- loose-default-character-set = utf8mb4
- 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
- [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 のインストールを行います。
⇒ Laravel 7 のインストール
コメント