mysql连接symfony + docker

时间:2019-05-14 12:18:18

标签: php mysql symfony docker

我正在使用docker开发一个symfony项目,但我遇到了mysql问题。 这是我的.env symfony中的配置:

DATABASE_URL=mysql://bpp:bpp@127.0.0.1:3306/bdd

当我运行php bin / console命令d:s:u --force时,数据库已正确更新。 通过缺点,当我想注册表格时,我遇到了symfony连接错误

error sf4

这是我的配置泊坞窗:

version: '3.7'
services:
  apache:
    build: .docker/apache
    container_name: bpp_apache
    ports:
      - "80:80"
    volumes:
      - .docker/config/vhosts:/etc/apache2/sites-enabled
      - ${SYMFONY_APP}:/home/wwwroot/bpp
    depends_on:
      - php
  mysql:
    image: mysql:8
    container_name: bpp_mysql
    volumes:
      - ./.docker/data/db:/var/lib/mysql
    command:
      - "--default-authentication-plugin=mysql_native_password"
      - "--lower_case_table_names=1"
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    ports:
      - "3306:3306"
  php:
    build: .docker/php
    container_name: bpp_php
    volumes:
      - ${SYMFONY_APP}:/home/wwwroot/bpp
    depends_on:
      - mysql
    links:
      - mysql
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: bpp_phpmyadmin
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
    ports:
      - "8080:80"

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

更改mysql URL的.env配置 来自

DATABASE_URL=mysql://bpp:bpp@127.0.0.1:3306/bdd

DATABASE_URL=mysql://bpp:bpp@mysql:3306/bdd

原因在于docker本身。您正在连接两个服务: PHP和MySql在docker网络内部的不同IP地址上运行。每次运行docker文件时,您将启动3个容器:

  1. Apache-IP地址1
  2. PHP-IP地址2
  3. MySql-IP地址3

并且MySql服务不在地址127.0.0.1上。将此留给集成的DNS服务器。