IORI-ST

Docker で a-blog cms を動かすための備忘録

先日初めてDockerを使ってa-blog cmsを動かしてみました。

普段は主にデザインを担当しているため、開発環境の分野ではまだまだ知らないことがたくさん。Dockerについても書籍で得た基礎知識をなんとなく知っている程度で、実際にコマンドを打って起動するのは初めてです。

なお参考にしたのはこれらの記事。

正直書いてあることとほぼほぼ同じことをやっているのですが、調べてみるとこの類の情報はまだまだ少ないんですよね。今回の私のパターンもひとつ参考になればなと思います。

※ なおこの記事は a-blog cms Advent Calendar 2019 の2日目を担当しています。

12/2現在ヘルプあり


1.DockerをMacにインストールする

まずDockerをインストールしていない方は、公式サイトよりインストールします。



続けてターミナルでこのコマンドを打って、Dockerが正しくインストールされていることを確認します。

$docker version

ClientとServerの情報が表示されればOKです。


docker-compose.ymlを用意

docker-compose.ymlとはdockerを動かすための様々な情報を記述しているファイルです。 今回は以下のようなdocker-compose.ymlを作成して、dockerのディレクトリに設置します。

docker-compose.yml


version: '2'
# service
services:
    # mysql
    mysql:
        image: mysql:5.7
        ports:
            - "3306:3306"
        volumes:
            - ./db/mysql_data:/var/lib/mysql
        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間のファイル同期
        links:
            - mysql:mysql
        environment:
            - VIRTUAL_HOST=acms.lab,www.acms.lab # host名を指定
            - APACHE_DOCUMENT_ROOT=/var/www/html # ドキュメントルートを指定
            - TZ=`ls -la /etc/localtime | cut -d/ -f8-9`

公式と違う点は以下2点。(どちらもハムさんのブログの情報です。ありがたい!)

1.「TZ: "ls -la /etc/localtime | cut -d/ -f8-9"」の記述を追加

環境変数の古い書き方が原因でふくエラーを防ぐ

2.「volumes: - ./db/mysql_data:/var/lib/mysql」を設定

ローカルにデータベースを残し、Dockerを再起動できるようにする



いざ起動!

$ cd {docker-compose.ymlのあるディレクトリへのパス}
$ docker-compose up -d

無事処理が終わると、- 同じディレクトリに「www」フォルダが生成されます。



a-blog cms をダウンロードする

次に、以下のページよりa-blog cmsをダウンロードします。

ダウンロード | a-blog cms developer

a-blog cms はPHPのバージョン別にインストールパッケージが別れています。もしPHPのバージョンがわからなければ、「www」フォルダ内にinfo.phpを作成しましょう。

<?php
phpinfo();
?>

さらにhostsファイルで127.0.0.1(ローカルホスト)にacms.labを設定します。

設置したら http://acms.lab/info.php で情報を表示します。



PHPのバージョンが確認できました。今回の例だと7.2.2だったので、パッケージは php 7.1.x - 7.3.x のものを使用していきます。

インストールパッケージを「www」に設置するとこんな感じに。



この状態で http://acms.lab/ にアクセスすると、セットアップ画面が表示されます。1動作環境のチェック、2ドメインの設定と手順にしたがって進んでいきましょう。



私はhtaccess.txtの名前を変更する時、「“.”(ドット)で始まる名前はシステムだけが使用できます。別の名前を指定してください。」と警告が出て保存できなかったのですが、一度テキストエディタで開いて別名で保存するとうまくいきました。


データベースを設定する

インストールの手順3に「データベースの設定」があります。この部分は docker-compose.yml の# mysql を参照します。

    # mysql
    mysql:
        image: mysql:5.7
        ports:
            - "3306:3306"
        environment:
            MYSQL_ROOT_PASSWORD: root

データベースサーバー名 mysql
データベース名 ablogcms(任意)
データベースユーザー名 root
データベースパスワード root


あとは通常通りの手順でインストールを完了させましょう。



【Help】コマンドでdockerを操作する件


突然なんのことかと思いましょうか。解決する前にAdvent Calendarに登録した公開予定日がきてしまいそうなので、思い切ってヘルプ募集します。。。

dockerを操作するときはdockerコマンドを使いますが、docker-compose.ymlを用意しているときはdocker-composeコマンドというものがあるそうで。「とりあえず一度停止からの起動をしてみよう!」と以下の作業をしてみました。

1. コンテナ一覧の表示

$ docker-compose ps

ここでは次の3つが表示されました。

  1. docker_mysql_1
  2. docker_proxy_1
  3. docker_www_1

2. サービスを停止

$ docker-compose stop
Stopping docker_www_1   ... done
Stopping docker_mysql_1 ... done
Stopping docker_proxy_1 ... done

3. サービスを開始

$ docker-compose start
Starting mysql ... done
Starting proxy ... done
Starting www   ... done

Forbidden

むむ、Apacheは立ち上がっているっぽいが、さっきまで見えていた a-blog cms のサンプルサイトが表示されない…。

権限云々とのことで自分としても調べてみたり一度再インストールしてリトライもしたのですが、何度もここで足止め状態です。そもそものコマンドの知識が不足しているのかもしれませんが、どなたか優しい方、お手をお貸しください。(泣)

※解決次第追記します。12月中には。


3/8 追記しました


12月中にはと言っておきながら早3ヶ月です。もう新生活が始まってしまうではありませんか。

正直なことを言うと、解決に結構時間かかりそうだなと思って少し構えておりました。そして最近例の感染症関連により、ここ数日時間的にも心理的にも意図しない空白準備期間が訪れたので、「あ、今だな」と。

と言うことでジェノベーゼ寺崎さんからいただいていたこちらのアドバイスを実行してみました。ご自身の解決方法とのことで、これはかなり期待!!



念のため、先にサービスを停止しておきます。


$ docker-compose stop
Stopping docker_www_1 ... done
Stopping docker_mysql_1 ... done
Stopping docker_proxy_1 ... done

その後 docker-compose.yml を開いて書き直し。ymlファイルのコメントアウトは「#」を使うんですね。


            # - TZ=`ls -la /etc/localtime | cut -d/ -f8-9`

docker-compose.yml を再びアップロードして、


docker-compose up -d

サービスを開始。


$ docker-compose start
Starting mysql ... done
Starting proxy ... done
Starting www ... done


きたー!!


と言うことで始めてみたらものの15分ほどで解決してしまいました…!ジェノベーゼ寺崎さんありがとうございます。わからないことは共有するものですね。

CMSへのログインも問題なくできました。これでコーディングの勉強も少しは捗るかな。

最近は自分の描いたデザインとマークアップ後のイメージに乖離がある気がしていて、実際にコードを書きながらデザインとの関係性を探りたいな、なんてことをよく考えます。でもあまりハード面に詳しくないデザイナーにとっては、環境構築こそがかなりのハードルなんですよね。

またdokerの知識共々前に進んでいきたいです。