Windows10 Proでkusanagi RoD構築【こけたので原因模索中】

kusaangi-docker provisioning failed

kusanagi Runs on Dockerです。Windows10Proで動かそうとしましたが、絶賛こけてます。プロヴィジョニングコマンドの実行までの手順はおそらく問題無いと思います。Docker for windows や git for windows はインストール済という前提です。

Docker バージョン確認

docker version

Docker Machineインストール

Docker for Windowsのインストール時に勝手に同梱インストールされるものではないらしく、手動インストールした。

Cドライブのhomeフォルダで実行した。なお、Docker MachineはDocker ホスト(Docker Engine が動くホスト環境)のプロビジョニングと管理用のツール

if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
chmod +x "$HOME/bin/docker-machine.exe"

Docker Compose バージョン確認

docker-compose version

gitのユーザー名とメールアドレスを設定/確認

//gitユーザー名設定
git config --global user.name "名前"
//gitユーザー名確認
git config user.name

//gitメールアドレス設定
git config --global user.email メールアドレス
//gitメールアドレス確認
git config user.email

kusanagi RoDインストール

インストールしたいフォルダに移動してコマンドを実行してもフォルダの場所に一切関係なく、CドライブのHomeにインストールされました。

curl https://raw.githubusercontent.com/prime-strategy/kusanagi-docker/master/install.sh | bash

パスを通す

kusanagi docker のヘルプコマンドを実行できるか確認

kusanagi-docker --help

ですが、パスが通っていないため使えなかったため、一度、以下を実行してkusanagi-dockerをコマンドで使えることを確認

/c/Users/ユーザー名/.kusanagi/bin/kusanagi-docker --help

パスを通す手順

Windowsキー + S で「システムの詳細設定の表示」を検索し、開く。「詳細設定」→「環境変数(N)」→「ユーザー環境変数」の「Path」を選択→「編集」→「新規」でkusanagi-dockerまでのパスを以下の様に入力して「OK」。

※Pathに、kusanagi-dockerを記載しない様に注意!kusanagi-dockerが入っているフォルダまでをPathに記載。

C:\Users\ユーザー名\.kusanagi\bin

kusanagi-dockerプロビジョニング

kusanagi-docker provision --fqdn wp.localhost wordpress

※上記プロヴィジョニングコマンドを実行し、以下のエラーが出たらDocker for Windowsが起動していないので、起動してください。『Dockerデーモンに接続でません、Docker for Windowsを起動する必要がありますよ!』てな感じです。Docker for Windows起動してください。

Couldn't connect to Docker daemon. You might need to start Docker for Windows.

ちなみに、以下のERRORは、インターネット回線自体の障害。復旧を待ちましょう。

Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

kusanagi-dockerプロビジョニングでエラー

ドキュメントそのままのプロヴィジョンコマンドで以下のようなエラーが出て、対策思案中です。

$ kusanagi-docker provision --fqdn wp.localhost wordpress
mkdir: cannot create directory ‘wordpress’: File exists
Pulling httpd (primestrategy/kusanagi-nginx:1.17.9-r0)...
1.17.9-r0: Pulling from primestrategy/kusanagi-nginx
Digest: sha256:6f824f7376cb55cdc2924d6fe4bd991b75696d18c11fd48555ae7bc0d6024f82
Status: Downloaded newer image for primestrategy/kusanagi-nginx:1.17.9-r0
Pulling certbot (certbot/certbot:v1.6.0)...
v1.6.0: Pulling from certbot/certbot
Digest: sha256:e2a940dbbc1aac8e6c22e43736eb9053bec17259f58af3ae6ec8e27a8b0b2cc7
Status: Downloaded newer image for certbot/certbot:v1.6.0
Building config
Step 1/5 : FROM wordpress:cli-php7.4
cli-php7.4: Pulling from library/wordpress
Digest: sha256:7f4549b384cd0f6bd80c2059a62e85f03a7c0e9070178e567a876e2f497000c0
Status: Downloaded newer image for wordpress:cli-php7.4
 ---> 1a23f44bf0e5
Step 2/5 : MAINTAINER kusanagi@prime-strategy.co.jp
 ---> Running in 6a75feecde60
Removing intermediate container 6a75feecde60
 ---> 3f9b24b0a1d8
Step 3/5 : COPY wp_mysqli.ini /usr/local/etc/php/conf.d/wp_mysql.ini
 ---> 1fc781bc42cc
Step 4/5 : ENTRYPOINT ["docker-entrypoint.sh"]
 ---> Running in 71dfa276fa7d
Removing intermediate container 71dfa276fa7d
 ---> e4eab067d327
Step 5/5 : CMD ["wp", "shell"]
 ---> Running in 5502418792c5
Removing intermediate container 5502418792c5
 ---> 08a594b48231
Successfully built 08a594b48231
Successfully tagged wordpress_config:latest
Image for service config was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Pulling php (primestrategy/kusanagi-php:7.4.8-r0)...
7.4.8-r0: Pulling from primestrategy/kusanagi-php
Digest: sha256:16a340545b54447c4daff64a85ca229f432f968526812065890a178d7dd0b14d
Status: Downloaded newer image for primestrategy/kusanagi-php:7.4.8-r0
Pulling db (mariadb:10.5.4-focal)...
10.5.4-focal: Pulling from library/mariadb
Digest: sha256:812d3a450addcfe416420c72311798f3f3109a11d9677716dc631c429221880c
Status: Downloaded newer image for mariadb:10.5.4-focal
Pulling ftp (primestrategy/kusanagi-ftpd:1.0.2-r1)...
1.0.2-r1: Pulling from primestrategy/kusanagi-ftpd
Digest: sha256:900280b62856f8ef51d8adda7d5ec55adc94f7b83efe30e236c4518d91f45e80
Status: Downloaded newer image for primestrategy/kusanagi-ftpd:1.0.2-r1
Creating wordpress_httpd  ... done
Creating wordpress_config ... done
Creating wordpress_db     ...
Creating wordpress_php     ... error
Creating wordpress_ftp    ...
Creating wordpress_certbot ...
Creating wordpress_db      ... done
ERROR: for wordpress_php  Cannot create container for service php: Mount denied:
Creating wordpress_ftp     ... done
Creating wordpress_certbot ... done

ERROR: for php  Cannot create container for service php: Mount denied:
The source path "wordpress_database:C:/Program Files/Git/var/run/mysqld:rw"
too many colons
Encountered errors while bringing up the project.

phpのコンテナが起動しないので、マウント出来ない、The source pathのコロンが多過ぎと怒られています。

docker-compose.ymlを見ながら考えると、上記エラー内、The source pathのwordpress_database: は不要か、もしくは container name をwordpress_db に合わせる必要があるかな?でも、コロン多過ぎのほうがあやしそうです。Qiitaの「パスにコロンを含むディレクトはマウント出来ない」が怪しい。

kusanagi-dockerプロビジョニングの途中で作られたdocker-compose.ymlは以下の通り。

version: '3'

networks:
  default:
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: 9000

services:
  httpd:
    container_name: wordpress_httpd
    image: primestrategy/kusanagi-nginx:1.17.9-r0
    restart: always
    env_file:
      - .kusanagi
      - .kusanagi.httpd
    volumes:
      - kusanagi:/home/kusanagi
      - kusanagi:/etc/letsencrypt
      - kusanagi:/var/www/html/.well-known
    ports:
      - "80:8080"
      - "443:8443"
    extra_hosts:
      - "wp.localhost:127.0.0.1"

  certbot:
    container_name: wordpress_certbot
    image: certbot/certbot:v1.6.0
    restart: always
    network_mode: "service:httpd"
    env_file:
      - .kusanagi.httpd
    volumes:
      - kusanagi:/var/www/html/.well-known
      - kusanagi:/etc/letsencrypt
    command:
      - --version

## CONFIG
  config:
    container_name: wordpress_config
    restart: always
    build:
        context: ./wpcli
    user: "1000:1001"
    env_file:
      - .kusanagi
      - .kusanagi.wp
      - .kusanagi.db
    volumes:
      - database:/var/run/mysqld
      - kusanagi:/home/kusanagi
    command: wp --version

  php:
    container_name: wordpress_php
    image: primestrategy/kusanagi-php:7.4.8-r0
    restart: always
    env_file:
      - .kusanagi
      - .kusanagi.php
      - .kusanagi.mail
    network_mode: "service:httpd"
    volumes:
      - database:C:/Program Files/Git/var/run/mysqld
      - kusanagi:/home/kusanagi

## MYSQL 
  db:
    container_name: wordpress_db
    image: mariadb:10.5.4-focal
    restart: always
    user: "999:999"
    env_file:
      - .kusanagi.mysql
    network_mode: "service:httpd"
    volumes:
      - database:/var/run/mysqld
      - database:/var/lib/mysql
 
## FTPD
  ftp:
    container_name: wordpress_ftp
    image: primestrategy/kusanagi-ftpd:1.0.2-r1
    restart: always
    network_mode: "service:httpd"
    env_file:
      - .kusanagi
      - .kusanagi.wp
    volumes:
      - kusanagi:/home/kusanagi


volumes:
  kusanagi:
  database:

コケてる原因模索と対策中です。