php - mysql 连接 symfony + docker

标签 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 时,数据库更新良好。 通过 cons 当我想注册一个表单时我有一个 symfony 连接错误

error sf4

这是我的配置 docker :

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"

谢谢你的帮助。

最佳答案

更改 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 服务器。

关于php - mysql 连接 symfony + docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56130302/

相关文章:

mysql - Microsoft SQL 与 mySQL 的连接

php - 将 mysql 查询的每一行传递给 php 数组

MYSQL检查是否存在日期链

jquery - 如何在 Symfony2 中重写原型(prototype)渲染

php - 找不到 Symfony 4 phpunit 类 WebTestCase

Symfony2 : Storing users, 角色、角色层次结构和数据库中的访问控制

php - echo 变量,但仅当字段不为空时

PHP - MYSQL 从数组中查询多个值

php - 使用 PHP 函数发送邮件时中继不允许的消息

javascript - 使用 $.getJSON() 从 php 获取 json 数组到 javascript