ページへ戻る

− Links

 印刷 

技術系備忘録​/Docker​/LAMP環境構築 のソース :: シンクリッジ

xpwiki:技術系備忘録/Docker/LAMP環境構築のソース

« Prev[3]  
LAMP 環境の docker-compose です。

ちょっとしたポイントとしては、以下な感じです。

- webサーバーは、centos7 のイメージから自前で apache + PHP7.3 環境を構築しています。
-- 使いそうなモジュールもとりあえず入れています。
-- php.ini の設定も少々変更しています。 (web/added_php.ini)
-- xdebug も使える状態です。xdebug.remote_host で宛先を書き換えるだけでOK
-- composer もインストールしています。
- db は MySQL ではなく MariaDb 使ってます。が、特に理由はありません。
- phpMyAdmin も便利なので使えるようにしています。
-- phpinfo() を 有効にしています。
- ドキュメントルート と DB はホスト側フォルダをマウントして永続化しています。

不要なものは適宜消して docker-compose up すればいいだろう。という方針です。
極力普通に、まったく尖った仕様ではないと自分では思ってます。
以上、備忘録として。

#contents

* docker-compose ファイル一覧 [#o24cab0e]
 ├ .env
 ├ docker-compose.yml
 ├ db
 │ └ conf.d
 │    └ my.cnf
 ├ phpmyadmin
 │ └ config.user.inc.php
 └ web
    ├ added_php.ini
    └ Dockerfile

** .env [#s7065a67]

 # web
 WEB_PORT=10080
 
 # phpMyAdmin
 PHPMYADMIN_PORT=10081
 
 # db
 DB_PORT=13306
 DB_PASSWORD=pass

** docker-compose.yml [#n8b21bed]
 version: '3'
 services:
 
   web:
     build: ./web
     ports:
       - ${WEB_PORT}:80
     volumes:
       - ./volumes/web/:/var/www/html
       - ./web/added_php.ini:/etc/php.d/added_php.ini
     container_name: "lamp-web"
 
   db:
     image: mariadb/server:10.4
     environment:
       MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
       MYSQL_ROOT_HOST: "%"
       TZ: Asia/Tokyo
     ports:
       - ${DB_PORT}:3306
     volumes:
       - ./volumes/db/:/var/lib/mysql
       - ./db/conf.d/:/etc/mysql/conf.d
       - ./db/initdb/:/docker-entrypoint-initdb.d
     container_name: "lamp-db"
 
   phpmyadmin:
     image: phpmyadmin/phpmyadmin:latest
     ports:
       - ${PHPMYADMIN_PORT}:80
     environment:
       - PMA_ARBITRARY=1
       - PMA_HOST=db
       - PMA_USER=root
       - PMA_PASSWORD=${DB_PASSWORD}
     volumes:
       - /sessions
       - ./phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
     container_name: "lamp-phpmyadmin"

-- MYSQL_ROOT_HOST は、デフォルトが"%"のハズだけど何故かそうならない版の為に追加。

** web/added_php.ini [#h2ee6eec]
 memory_limit = -1
 upload_max_filesize = 16G
 post_max_size = 16G
 max_execution_time = 1200
 
 [Date]
 date.timezone = "Asia/Tokyo"
 
 [mbstring]
 mbstring.internal_encoding = "UTF-8"
 mbstring.language = "Japanese"
 
 ; XDEBUG ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 xdebug.remote_enable=1
 ; 192.168.1.2 ...
 xdebug.remote_host=host.docker.internal
 xdebug.remote_port=9000
 xdebug.remote_handler="dbgp"

** web/Dockerfile [#j80a33bf]
 FROM centos:centos7
 
 RUN yum -y update
 
 # タイムゾーンを日本時間に設定
 RUN \cp -p -f /usr/share/zoneinfo/Japan /etc/localtime
 
 # install apache2.4
 RUN yum -y install httpd
 
 # install php73
 RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
 RUN yum -y install --enablerepo=epel libedit libargon2 libzip libXpm libtiff libmcrypt fontconfig-devel libfreetype libpng15 liblzf
 RUN yum -y install --disablerepo=* --enablerepo=remi,remi-php73 php php-mbstring php-pdo php-gd php-mcrypt php-mysqlnd php-pecl-redis php-pecl-xdebug php-opcache php-pecl-apcu
 
 # composer インストール
 RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
  && php composer-setup.php \
  && php -r "unlink('composer-setup.php');" \
  && mv composer.phar /usr/local/bin/composer
 
 EXPOSE 80
 CMD ["httpd", "-D", "FOREGROUND"]

** db/conf.d/my.cnf [#d2f2697d]
 [mysqld]
 character-set-server=utf8mb4
 collation-server=utf8mb4_bin
 
 [client]
 default-character-set=utf8mb4

** phpmyadmin/config.user.inc.php [#i55bafe9]
 <?php
 
 // Maximum execution time = no limit
 $cfg['ExecTimeLimit'] = 0;
 
 // phpinfo enable
 $cfg['ShowPhpInfo'] = true;

« Prev[3]