Les*_*haZ 4 php symfony symfony4
我的问题是如何配置与 mysql 容器的连接。
这是我的 docker-compose.yml
version: '3'
services:
php:
build: ./php-fpm
volumes:
- ./iym:/var/www/iym
- ./php-fpm/php.ini:/usr/local/etc/php/php.ini
depends_on:
- mysql
web:
build: ./nginx
ports:
- "8888:80"
volumes:
- ./iym:/var/www/iym
- ./nginx/iym.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
mysql:
image: mysql:5.6
restart: always
command: --default-authentication-plugin=mysql_native_password
volumes:
- ${DB_PATH_HOST}:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: "symf0ny"
ports:
- "3306:3306"
Run Code Online (Sandbox Code Playgroud)
这是我在.env文件中的DATABASE_URL
DATABASE_URL=mysql://root:symf0ny@127.0.0.1:3306/iym
Run Code Online (Sandbox Code Playgroud)
当我尝试运行时php bin/console doctrine:database:create,出现类似“ SQLSTATE[HY000] [2002] Connection refused”的错误。操作系统 - ubuntu 18.04。我应该怎么做才能连接到数据库?非常感谢!
mic*_*sna 12
我假设您正在尝试从 docker-compose 中定义的另一个容器/服务进行连接,并且您正在使用当前版本的 docker-compose(2.4 或 3.7)
你需要改变
DATABASE_URL=mysql://root:symf0ny@127.0.0.1:3306/iym
Run Code Online (Sandbox Code Playgroud)
到
DATABASE_URL=mysql://root:symf0ny@mysql:3306/iym
Run Code Online (Sandbox Code Playgroud)
原因是指的127.0.0.1是运行 php 的机器的本地主机。在这种情况下,它是 php 的容器 localhost。但是数据库不在那里运行。它在另一个 docker 容器中运行,mysql在这种情况下,可以在服务名称下访问。
在docker-compose 网络文档中写道:
默认情况下,Compose 为您的应用程序设置单个网络。服务的每个容器都加入默认网络,并且可以被该网络上的其他容器访问,并且可以在与容器名称相同的主机名上被它们发现。
但是,该服务可在容器名称(自动生成到projectName_serviceName_1(项目名称以默认文件夹名称开头)下)发现,但也可在服务名称、链接和服务别名(如果已定义)下发现。我建议尽可能使用服务名称。
更多文档:https : //docs.docker.com/compose/networking/
| 归档时间: |
|
| 查看次数: |
2837 次 |
| 最近记录: |