Docker環境

a-blog cmsを動かすためのDocker環境を立ち上げます。

利用コンテナ

mysqlは公式イメージをそのまま使い、jwilder/nginx-proxy は 複数環境を立ち上げる為のリバースプロキシです。atsu666/ioncubeioncube loaderがインストール済みのphp-apatch環境となります。

利用可能なPHP

atsu666/ioncube のPHP環境は以下のバージョンが利用できます。


PHPバージョン コンテナ
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

docker-compose.yml

以下、docker-compose.yml の例になります。

version: '2'
# service
services:
    # mysql
    mysql:
        image: mysql:5.7
        ports:
            - "3306:3306"
        environment:
            MYSQL_ROOT_PASSWORD: root
    # proxy
    proxy:
        image: jwilder/nginx-proxy:latest
        volumes:
            - /var/run/docker.sock:/tmp/docker.sock:ro
        ports:
            - "80:80"
    # www
    www:
        image: atsu666/ioncube:7.2 # phpのバージョンにあったものを指定
        privileged: true
        volumes:
            - ./www:/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 # ドキュメントルートを指定

host, 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に設定してください。