Windows10 Proでkusanagi RoD構築【こけたので原因模索中】
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:
コケてる原因模索と対策中です。