ドッカーとは別のポート上でのMySQLの実行

user3352133:

私はと同様の問題持ってドッカー作曲を使用して、ポート3307上で実行MySQLをしかし、どちらか、私は木やここソリューションが動作していないため、木材を見ることができません。

私は、次のドッキングウィンドウ-compose.ymlファイルを持っています:

version: '3'
services:
    db:
        image: mysql:5.7
        container_name: squirrels_db
        volumes:
          - db_data:/var/lib/docker/volumes/squirrels_db_data/_data
        restart: always
        ports:
          # <Port exposed> : <MySQL Port running inside container>
          - 3310:3306
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: wordpress
            MYSQL_USER: mydb_user
            MYSQL_PASSWORD: password
        volumes:
          - ./var/lib/docker/volumes/squirrels_db_data/_data
        networks:
          internal-net:
            ipv4_address: 172.29.0.11

    wordpress:
        image: wordpress:latest
        container_name: squirrels_web
        depends_on:
            - db
        ports:
           - 8000:80
        restart: always
        environment:
            WORDPRESS_DB_HOST: db:3306
            WORDPRESS_DB_USER: mydb_user
            WORDPRESS_DB_NAME: mydb_name
            WORDPRESS_DB_PASSWORD: password

        volumes:
          - ./data/wp_content:/var/www/html/wp-content
          - ./config/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
        networks: 
          nginx-proxy:
          internal-net:
            ipv4_address: 172.29.0.12      

# Names our volume
volumes:
  db:

networks:
  nginx-proxy:
    external:
      name: nginx-proxy
  internal-net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.29.0.0/16

:私はここにユーザー名とパスワードを変更しているし、最終的に.envファイルでそれらを持っています

私が打つときのhttp:// localhostを:8000は、私はWordPressがメッセージ「エラーがデータベース接続を確立する」と(ドッキングウィンドウ-コンログから)ログに、次の配信見ています:

PHPの警告:mysqliの:: __構築物():(HY000 / 2002):拒否した(2002)接続:接続ライン22のMySQL接続エラーに標準入力コードで拒否しました

この正式ナット私を駆動し、ちょうど私が何かを明らかに行方不明です知ることによって、全く助けません!だから、任意の観察結果や提案をありがたく受け取りました

感謝

アンディMardell:

私はそれが働いて得ることができました。ここでは作業ファイルだ - 私は下の私の変更を説明します:

version: "3"
services:
  db:
    image: mysql:5.7
    container_name: squirrels_db
    volumes:
      # You prepended with db_data: but volume was called db – scroll down to volumes to see my fix
      - db_data:/var/lib/docker/volumes/squirrels_db_data/_data
    restart: always
    ports:
      # <Port exposed> : <MySQL Port running inside container>
      - 3310:3306
    environment:
      MYSQL_ROOT_PASSWORD: password
      # This is likely the isse - you called it wordpress but tried to connect to mydb_name in the wordpress container
      MYSQL_DATABASE: mydb_name
      MYSQL_USER: mydb_user
      MYSQL_PASSWORD: password
    # REMOVE BELOW 2 LINES - you declared above
    # volumes:
    #   - ./var/lib/docker/volumes/squirrels_db_data/_data
    networks:
      internal-net:
        ipv4_address: 172.29.0.11

  wordpress:
    image: wordpress:latest
    container_name: squirrels_web
    depends_on:
      - db
    ports:
      - 8000:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: db # db:3306 is fine but that's default so removed
      WORDPRESS_DB_USER: mydb_user
      WORDPRESS_DB_NAME: mydb_name
      WORDPRESS_DB_PASSWORD: password
    volumes:
      - ./data/wp_content:/var/www/html/wp-content
      - ./config/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    networks:
      nginx-proxy:
      internal-net:
        ipv4_address: 172.29.0.12

# Names our volume
volumes:
  # FIX: renamed from db to db_data. Added {} to declare an empty volume
  db_data: {}

networks:
  nginx-proxy:
    external:
      name: nginx-proxy
  internal-net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.29.0.0/16

変更

  1. 私はあなたのインデントは大丈夫だったと思う - しかし、私は最初のテストとしてこれを変更しました

  2. あなたのデシベルのコンテナ内で宣言2つのボリュームキーを持っていました。ボリュームパスを付加:第一、第二のDB_DATAが欠落し、一見正しかったです。

  3. あなたの音量をデシベルと命名されましたが、DB_DATAとして(ポイント2のように)使用されていました

  4. あなたのデータベース名が一致しませんでした。で、あなたは、セットアップのデシベルのワードプレスと呼ばれMYSQL_DATABASE: wordpress、その後に接続しようとしたmydb_name時にWORDPRESS_DB_NAME: mydb_name

簡単な解決策

上記の作品が、あなたは間違いなくネットワークが必要なのでしょうか?以下も動作し、はるかに簡単ですします。

version: "3"
services:
  db:
    image: mysql:5.7
    container_name: squirrels_db
    volumes:
      - db_data:/var/lib/docker/volumes/squirrels_db_data/_data
    restart: always
    ports:
      - 3310:3306
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mydb_name
      MYSQL_USER: mydb_user
      MYSQL_PASSWORD: password

  wordpress:
    image: wordpress:latest
    container_name: squirrels_web
    depends_on:
      - db
    ports:
      - 8000:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: mydb_user
      WORDPRESS_DB_NAME: mydb_name
      WORDPRESS_DB_PASSWORD: password
    volumes:
      - ./data/wp_content:/var/www/html/wp-content
      - ./config/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

volumes:
  db_data: {}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=5704&siteId=1