Docker環境
a-blog cmsを動かすためのDocker環境を立ち上げます。
利用する Docker イメージ
| mysql | 公式イメージをそのまま使用します |
|---|---|
| jwilder/nginx-proxy | 複数環境を立ち上げる為のリバースプロキシです |
| atsu666/ioncube | ioncubeLoaderがインストール済みのphp-apatch環境です |
| atsu666/acms | PHP8.0 以上の php-apatch環境です( ioncubeLoaderはインストールされていません。Ver.3.0以上での使用を推奨) |
利用可能なPHP
atsu666/ioncube のPHP環境は以下のバージョンが利用できます。
| PHPバージョン | イメージ |
|---|---|
| 7.3 | atsu666/ioncube:7.3 |
| 7.2 | atsu666/ioncube:7.2 |
| 7.1 | atsu666/ioncube:7.1 |
| 7.0 | atsu666/ioncube:7.0 |
| 5.6 | atsu666/ioncube:5.6 |
| 5.5 | atsu666/ioncube:5.5 |
| 5.4 | atsu666/ioncube:5.4 |
| 5.3 | atsu666/ioncube:5.3 |
※ a-blog cms Ver.3.0以上ではionCubeLoaderが不要になりましたが、PHP7.2.5の環境でVer.3.0以上をお使いの場合は、引き続き atsu666/ioncube:7.2をお使いください
atsu666/acms のPHP環境は以下のバージョンが利用できます。
| PHPバージョン | イメージ |
|---|---|
| 8.3 | atsu666/acms:8.3 |
| 8.2 | atsu666/acms:8.2 |
| 8.1 | atsu666/acms:8.1 |
| 8.0 | atsu666/acms:8.0 |
※ ioncubeLoaderはインストールされていません。ioncubeLoaderが不要になったa-blog cms Ver.3.0以上の環境での使用を想定しています。
docker-compose.yml
以下、docker-compose.yml の例になります。
version: '3'
# service
services:
# mysql
mysql:
image: mysql:8.0.30
ports:
- "3306:3306"
volumes:
- ./mysql-data:/var/lib/mysql:delegated
environment:
MYSQL_ROOT_PASSWORD: root
command: --innodb-use-native-aio=0
# proxy
proxy:
image: jwilder/nginx-proxy:1.0
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
ports:
- "80:80"
# www
www:
image: atsu666/acms:8.4 # phpのバージョンにあったものを指定
privileged: true
volumes:
- ./html:/var/www/html # host, guest間のファイル同期
- /etc/localtime:/etc/localtime:ro
links:
- mysql:mysql
environment:
- VIRTUAL_HOST=acms.lab,www.acms.lab # host名を指定
- APACHE_DOCUMENT_ROOT=/var/www/html # ドキュメントルートを指定M1/M2 Mac(arm64)で atsu666/ioncube:5.5, atsu666/ioncube:5.4, atsu666/ioncube:5.3 を使用する場合
「atsu666/ioncube:5.5|5.4|5.3」 は、arm64アーキテクチャに対応していないので、docker-compose.yml を修正する必要があります。 platform: linux/amd64 を追加することによって、M1/M2 Mac 環境でも動作するようになります。
www:
image: atsu666/ioncube:5.5
platform: linux/amd64 # この行を追加
privileged: true
volumes:
- ./www:/var/www/html
- /etc/localtime:/etc/localtime:ro
links:
- mysql:mysql
environment:
- VIRTUAL_HOST=acms.lab,www.acms.lab
- APACHE_DOCUMENT_ROOT=/var/www/htmlhost, guest間のファイル同期
ローカル開発環境なので、host側のファイルを変更したら、すぐに guest(dockerコンテナ)のファイルも書き換わってほしいです。それがvolumesの設定になります。
host:guest の 書式でパスを記述してください。
VIRTUAL_HOSTの設定
リバースプロキシの jwilder/nginx-proxyを導入していますので重要な設定になってきます。jwilder/nginx-proxy が port: 80 で受け、アクセスされたURLから、各コンテナに設定されているVIRTUAL_HOSTに振り分けてくれます。これにより、複数のwebコンテナを立ち上げても、portを変えたりすることなく、簡単に共存できるようになります。
VIRTUAL_HOSTの設定は簡単で、environment 設定に VIRTUAL_HOSTを設定するだけです。上の例では acms.lab とwww.acms.lab を設定しています。
最後にhostsファイルを編集し acms.lab でアクセスできるようにしましょう。
起動
$ cd /path/to/docker # docker-compose.ymlがあるディレクトリに移動
$ docker-compose up -d
Dockerコンテナのmysqlを利用する
データベースをdockerのmysqlを利用する場合、上記の例だと3306ポートをマッピングしていますので、dockerを動かしている環境のhostのIPアドレスをデータベースのhostに設定してください。
* 上記で接続できない場合は、 データベースホストに mysql を設定してみてください。これは「docker.compose.yaml」で設定したリンク名になります。