首页 > 解决方案 > 如何正确连接我的 php (symfony) 容器和 mysql 容器?

问题描述

我试图将 php 容器与 symfony 4 与 mysql 容器连接起来,但出现此错误:

An exception occurred in driver: SQLSTATE [HY000] [2002] php_network_getaddresses: getaddrinfo failed: Unknown host.

我可以通过 phpmyadmin 与 mysql 连接。

这是我的 docker-compose.yml:

version: '3'
services:
    mysql:
        image: mysql
        command:
            - "--default-authentication-plugin=mysql_native_password"
        container_name: sf4_mysql
        volumes:
            - .docker/data/db:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: sf4
            MYSQL_USER: sf4
            MYSQL_PASSWORD: sf4

    php:
        build: .docker/php
        container_name: sf4_php
        volumes:
          - .:/home/wwwroot/sf4
        environment:
          - maildev_host=sf4_maildev
        depends_on:
          - maildev
          - mysql

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        container_name: sf4_phpmyadmin
        environment: 
            PMA_HOST: mysql
            PMA_PORT: 3306
        ports:
            - 8080:80
        links:
            - mysql

和 .env 文件

DATABASE_URL=mysql://sf4:sf4@mysql/sf4

这是我的学说.yaml 文件。我已经删除了不必要的评论。

parameters:
    env(DATABASE_URL): ''

doctrine:
    dbal:
        driver: 'pdo_mysql'
        server_version: '8.0'
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        url: '%env(resolve:DATABASE_URL)%'
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

这是我当前的存储库 提前感谢您的帮助。

标签: mysqldockerdocker-composedoctrinedatabase-connection

解决方案


端口不见了。

尝试

DATABASE_URL=mysql://sf4:sf4@mysql:3306/sf4

提醒 :

确保在使用命令登录后从容器内部执行 symfony 命令:

docker-compose exec php bash

推荐阅读