メニュー
ブログ更新履歴
コンテンツ更新履歴
リンク
  • Magome
  • クラウドベースのMIDIシーケンサ
    音楽制作に興味のある方を対象に、スタンドアロンでも使え、ネットならではの面白さも兼ね備えた音楽制作アプリの提供を目指しています。
twitter

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 すればいいだろう。という方針です。
極力普通に、まったく尖った仕様ではないと自分では思ってます。
以上、備忘録として。

docker-compose ファイル一覧 anchor.png

├ .env
├ docker-compose.yml
├ db
│ └ conf.d
│    └ my.cnf
├ phpmyadmin
│ └ config.user.inc.php
└ web
   ├ added_php.ini
   └ Dockerfile
Page Top

.env anchor.png

# web
WEB_PORT=10080

# phpMyAdmin
PHPMYADMIN_PORT=10081

# db
DB_PORT=13306
DB_PASSWORD=pass
Page Top

docker-compose.yml anchor.png

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}
    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"
Page Top

web/added_php.ini anchor.png

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"
Page Top

web/Dockerfile anchor.png

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"]
Page Top

db/conf.d/my.cnf anchor.png

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin

[client]
default-character-set=utf8mb4
Page Top

phpmyadmin/config.user.inc.php anchor.png

<?php

// Maximum execution time = no limit
$cfg['ExecTimeLimit'] = 0;

// phpinfo enable
$cfg['ShowPhpInfo'] = true;

Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 188, today: 2, yesterday: 2
Princeps date: 2019-09-04 (Wed) 19:31:11
Last-modified: 2019-09-04 (Wed) 19:37:34 (JST) (79d) by takatsuka