2017-12-01 19 views
0

私はドッカーには新しく、システムを稼働させるために2日間戦っています。私の作成ファイルは、nginx、php-fpm、mysql、およびphpmyadminの各コンテナを作成します。私はお互いにすべてのコンテナをpingできます。しかし、マウントされたpublic_htmlボリュームからデータベースに何かをインストールしようとすると(データベースにテーブルを作成する必要があるアプリケーションをインストールする場合など)、アプリケーションは単にデータベースに接続できません。私は以上の資格情報が正しいことを確認しました。私の人生にとって、私はどこが間違っているのか分かりません。どんな助けでも大歓迎です。私は以下の自分の作成ファイルを含めます:mysqlにリンクされたDockerコンテナは接続できません

version: '3' 
services: 
www: 
container_name: site1-www 
image: nginx:1.13.7-alpine 
expose: 
    - "80" 
ports: 
    - 8001:80 
networks: 
    datacentre: 
    aliases: 
     - site1www 
env_file: 
    - ".env" 
environment: 
    - NGINX_HOST=localhost 
volumes: 
    - /mnt/www/site1.test/public_html:/usr/share/nginx/html/ 
    - 
/mnt/www/site1.test/conf/default.conf:/etc/nginx/conf.d/default.conf 
depends_on: 
    - db 
links 
    - db 

phpfpm: 
build: ./phpfpm 
container_name: site1-phpfpm 
networks: 
    datacentre: 
    aliases: 
     - site1php 
volumes: 
    - /mnt/www/site1.test/public_html:/usr/share/nginx/html 
    - /mnt/www/site1.test/conf/php.ini:/usr/local/etc/php/php.ini 
depends_on: 
    - db 
links 
    - db 

db: 
container_name: site1-db 
image: mariadb:10.3.2 
ports: 
    - 3400:3306 
env_file: 
    - ".env" 
environment: 
    - MYSQL_DATABASE=test1db 
    - MYSQL_ROOT_PASSWORD=password 
    - MYSQL_USER=test1user 
    - MYSQL_PASSWORD=password 
networks: 
    datacentre: 
    aliases: 
     - site1db 
volumes: 
    - /mnt/dbdata:/var/lib/mysql 

dbadmin: 
image: phpmyadmin/phpmyadmin:latest 
container_name: site1-dbadmin 
ports: 
    - 8000:80 
networks: 
    datacentre: 
    aliases: 
     - site1dbadmin 
environment: 
    - PMA_ARBITRARY=1 
    - PMA_HOST=mysql 
depends_on: 
    - db 
links 
    - db 

networks: 
    datacentre: 
    external: 
     name: datacentre_net 
+0

あなたのリンク設定が 'links'または' links: ' – Apolozeus

+0

であるかどうか確認してください。あなたの 'app'がポート3400に接続していない可能性がありますか? – Forbs

+0

ドッカーネットワーク上の@Forbsポート3306 – Matt

答えて

0

最初のショットのために少し複雑に見えます。すべての名前とエイリアスを削除し、接続にサービス名を使用します。そこからビルドします。

wwwサービスの場合、nginxはFastCGIワーカーとしてphpfpm:9000を設定する必要があります。

あなたのPHPアプリケーションとphpMyAdminは、ユーザー定義されたネットワーク上のサービスにアクセスする必要はありませんdb:3306

version: '3' 

services: 
    www: 
    image: nginx:1.13.7-alpine 
    ports: 
     - 8001:80 
    env_file: 
     - ".env" 
    environment: 
     - NGINX_HOST=localhost 
    volumes: 
     - /mnt/www/site1.test/public_html:/usr/share/nginx/html/ 
     - /mnt/www/site1.test/conf/default.conf:/etc/nginx/conf.d/default.conf 
    depends_on: 
     - phpfpm 

    phpfpm: 
    build: ./phpfpm 
    volumes: 
     - /mnt/www/site1.test/public_html:/usr/share/nginx/html 
     - /mnt/www/site1.test/conf/php.ini:/usr/local/etc/php/php.ini 
    depends_on: 
     - db 

    db: 
    image: mariadb:10.3.2 
    ports: 
     - 3400:3306 
    env_file: 
     - ".env" 
    environment: 
     - MYSQL_DATABASE=test1db 
     - MYSQL_ROOT_PASSWORD=password 
     - MYSQL_USER=test1user 
     - MYSQL_PASSWORD=password 
    volumes: 
     - /mnt/dbdata:/var/lib/mysql 

    dbadmin: 
    image: phpmyadmin/phpmyadmin:latest 
    ports: 
     - 8000:80 
    environment: 
     - PMA_ARBITRARY=1 
     - PMA_HOST=db 
    depends_on: 
     - db 

linksに接続するように設定する必要があります。

関連する問題