前提・実現したいこと
docker-compose+nginxproxy+letsencrypt+wordpressで
SSL対応したローカル開発環境を立ち上げたいのですが
ネットワークの通信がうまく通りません。
発生しているエラーメッセージ
firefoxからhttps://example.comにアクセスすると
error
1500 Internal Server Error 2nginx/1.14.1
と出ます。
ログを確認したところ以下のようになりました。
sharedのログ
log
1nginx-proxy | nginx.1 | example.com 172.20.0.1 - - [14/Jun/2019:02:55:51 +0000] "GET / HTTP/2.0" 500 193 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:67.0) Gecko/20100101 Firefox/67.0" 2
wptest1のログ
log
1 2ESC[36mwordpress_1 |ESC[0m AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.20.0.5. Set the 'ServerName' directive globally to suppress this message 3ESC[36mwordpress_1 |ESC[0m [Fri Jun 14 02:55:46.377404 2019] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.3.6 configured -- resuming normal operations 4
ディレクトリ構成
DE
∟shared
∟wptest1
該当のソースコード
yml
1#shared/docker-compose.yml 2 3version: "2" 4services: 5 nginx-proxy: 6 image: jwilder/nginx-proxy 7 container_name: nginx-proxy 8 ports: 9 - 80:80 10 - 443:443 11 volumes: 12 - ./certs:/etc/nginx/certs:ro 13 - /etc/nginx/vhost.d 14 - /usr/share/nginx/html 15 - /var/run/docker.sock:/tmp/docker.sock:ro 16 restart: always 17 networks: 18 - default 19 letsencrypt-nginx-proxy-companion: 20 image: jrcs/letsencrypt-nginx-proxy-companion 21 container_name: nginx-letsencrypt 22 volumes: 23 - ./certs:/etc/nginx/certs 24 - /var/run/docker.sock:/var/run/docker.sock:ro 25 volumes_from: 26 - nginx-proxy 27 restart: always 28 29networks: 30 default: 31 external: 32 name: shared 33
yml
1#wptest1/docker-compose.yml 2 3version: "2" 4services: 5 wordpress: 6 image: wordpress 7 environment: 8 VIRTUAL_HOST: example.com 9 VIRTUAL_PORT: 443:443 10 WORDPRESS_DB_PASSWORD: root 11 LETSENCRYPT_HOST: example.com 12 LETSENCRYPT_EMAIL: example@example.com 13 LETSENCRYPT_TEST: "false" 14 depends_on: 15 - mysql 16 restart: always 17 networks: 18 - default 19 logging: 20 options: 21 max-size: 5m 22 max-file: "10" 23 24 mysql: 25 image: mysql:5.7 26 environment: 27 MYSQL_ROOT_PASSWORD: root 28 restart: always 29 logging: 30 options: 31 max-size: 5m 32 max-file: "10" 33 34networks: 35 default: 36 external: 37 name: shared
###作業した内容
ネットワークを立ち上げ
コンテナをそれぞれ立ち上げました。
bash
1 2$ docker network create --driver bridge shared 3$ cd shared 4$ docker-compose up -d 5$ cd wptest1 6$ docker-compose up -d 7
その後ホストPCのhostsファイルに
0.0.0.0 example.comとしております。
試したこと
ymlのnetwork部分(service配下のdefaultとなっている部分)
yml
1services: 2 nginx-proxy: 3 networks: 4 - default
を以下のように
yml
1services: 2 nginx-proxy: 3 networks: 4 - shared
とすると、docker-compose upをかけた時に
error
1ERROR: Service "nginx-proxy" uses an undefined network "shared"
と表示されます。
試したこと2
docker ps で確認すると以下のようになっておりました。
$docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES hjkasduyt7 wordpress "docker-entrypoint." 2 hours ago Up 2 hours 80/tcp wordpress_1 876sdfsafd mysql:5.7 "docker-entrypoint." 2 hours ago Up 2 hours 3306/tcp, 33060/tcp mysql_1 76876jkhkk jrcs/letsencrypt-nginx-proxy-companion "/bin/bash /app/ent" 2 hours ago Up 2 hours nginx-letsencrypt 897asdf876 jwilder/nginx-proxy "/app/docker-entryp" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx-proxy
試したこと3
以下のコマンドでapacheの設定ファイルを確認しようとしましたが
debianでのapache設定ファイルのどこを確認したら良いかがよくわかりませんでした。
$ docker-compose exec wordpress bash
試したこと3
テストとしてwordpressをやめてhttpdコンテナで接続してみましたが
同じ現象になりました。
ブラウザからhttpでは正常に接続できてhttpsだと500のサーバエラー(nginx)が返ってきます。
少しわかってきたこと
プロキシ→ウェブサーバの通信は80ポートで行われているっぽい。
参考ページ
当初SSLなしの環境で
https://suin.io/561
こちらのページを参考に構築し、wpサイトを動かすことはできました。
その後SSL設定をやろうとコンテナ内でゴネごねしようとしていたのですが
以下のページを発見して参考にさせていただいている次第です。
https://hogehuga.net/linux/166/
https://hogehuga.net/linux/116/
質問内容
確認すべきところ、テストすべきことなど細かいことでも構いませんので
ご教授いただけましたら幸いです。
自分としてはnginxが表示されているのでそこから
アプリケーションコンテナへの通信でこけていると予想しておりますが
解決策が見つけられません。
またhostsにて0.0.0.0 と指定しておりますが
ここもできれば 192.168〜という形にしたいと考えており、
設定の仕方もご教授いただければ幸いです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー