質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.11%

docker-compose+nginxproxy+letsencrypt+wordpress

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 303

ruuusaamarki

score 415

前提・実現したいこと

docker-compose+nginxproxy+letsencrypt+wordpressで
SSL対応したローカル開発環境を立ち上げたいのですが
ネットワークの通信がうまく通りません。

発生しているエラーメッセージ

firefoxからhttps://example.comにアクセスすると

500 Internal Server Error
nginx/1.14.1


と出ます。

ログを確認したところ以下のようになりました。
sharedのログ

nginx-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"

wptest1のログ

ESC[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
ESC[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

ディレクトリ構成

DE
∟shared
∟wptest1

該当のソースコード

#shared/docker-compose.yml

version: "2"
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./certs:/etc/nginx/certs:ro
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
    restart: always
    networks:
      - default
  letsencrypt-nginx-proxy-companion:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nginx-letsencrypt
    volumes:
      - ./certs:/etc/nginx/certs
      - /var/run/docker.sock:/var/run/docker.sock:ro
    volumes_from:
      - nginx-proxy
    restart: always

networks:
  default:
    external:
      name: shared
#wptest1/docker-compose.yml

version: "2"
services:
  wordpress:
    image: wordpress
    environment:
      VIRTUAL_HOST: example.com
      VIRTUAL_PORT: 443:443
      WORDPRESS_DB_PASSWORD: root
      LETSENCRYPT_HOST: example.com
      LETSENCRYPT_EMAIL: example@example.com
      LETSENCRYPT_TEST: "false"
    depends_on:
      - mysql
    restart: always
    networks:
      - default
    logging:
      options:
        max-size: 5m
        max-file: "10"

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
    restart: always
    logging:
      options:
        max-size: 5m
        max-file: "10"

networks:
  default:
    external:
      name: shared

作業した内容

ネットワークを立ち上げ
コンテナをそれぞれ立ち上げました。

$ docker network create --driver bridge shared
$ cd shared
$ docker-compose up -d
$ cd wptest1
$ docker-compose up -d

その後ホストPCのhostsファイルに
0.0.0.0 example.comとしております。

試したこと

ymlのnetwork部分(service配下のdefaultとなっている部分)

services:
  nginx-proxy:
    networks:
      - default


を以下のように

services:
  nginx-proxy:
    networks:
      - shared


とすると、docker-compose upをかけた時に

ERROR: 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〜という形にしたいと考えており、
設定の仕方もご教授いただければ幸いです。
よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • t_obara

    2019/06/14 14:22

    Dockerのログではなく、webサーバーのログです。

    キャンセル

  • foce

    2019/06/15 03:36

    "Set the 'ServerName' directive globally to suppress this message"とログに表示されているようですが、ぐぐってみるとApacheがヒットしますね。nginxではなくApacheが動作しているのではないでしょうか。「sudo service httpd stop」このコマンドをコンテナ内で実行しても同じログが出ますか?

    キャンセル

  • ruuusaamarki

    2019/06/15 10:50

    webサーバのログ追記してみました。すみません、logが混在しておりましたので分けました。1行目がnginxプロキシのログで2行目以降がwordpressが入っているサーバのログとなります。wpサーバでservice apache2 stopは実行できました。実行後はローカルに戻ったのでおそらくコンテナが一度落ちて再起動したような動きと予想しています。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる