Php 通过docker compose将laravel容器连接到现有mysql容器
我是docker新手,我正在尝试通过docker compose将现有的MySQL容器连接到我的Laravel应用程序 其中MySQL docker-compose.yml文件如下Php 通过docker compose将laravel容器连接到现有mysql容器,php,mysql,laravel,docker,Php,Mysql,Laravel,Docker,我是docker新手,我正在尝试通过docker compose将现有的MySQL容器连接到我的Laravel应用程序 其中MySQL docker-compose.yml文件如下 version: '3' services: web: container_name: ${APP_NAME}_web build: context: ./docker/web ports: - "9000:80" volumes: - ./:/
version: '3'
services:
web:
container_name: ${APP_NAME}_web
build:
context: ./docker/web
ports:
- "9000:80"
volumes:
- ./:/var/www/app
depends_on:
- db
db:
container_name: ${APP_NAME}_db
image: mysql:5.7
ports:
- "3307:3306"
restart: always
volumes:
- dbdata:/var/lib/mysql/
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=laravel_docker_db
volumes:
dbdata:
driver: local
driver_opts:
type: none
device: /storage/docker/laravel_mysql_data
o: bind
此脚本正在下载最新的mysql版本并制作一个新容器。我只想将MYSQL容器与我的应用程序连接起来
在这里,我现有的MYSQL容器是使用一个网桥网络使用一个特定的IP创建的,并在docker机器上运行
我想知道,我可以在db上下文中定义现有的MYSQL容器配置吗 尝试此docker compose文件:
version: '3.5'
services:
db:
container_name: myapp_db
image: mysql:5.7
ports:
- "3307:3306"
restart: always
volumes:
- dbdata:/var/lib/mysql/
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=laravel_docker_db
networks:
- myapp-network
networks:
myapp-network:
driver: bridge
这种情况有两种情况:
1.如果您的laravel实例也在docker中-只需添加到.env文件的下一行:
DB_HOST=myapp_db
DB_PORT=3306
DB_DATABASE=laravel_docker_db
DB_USERNAME=root
DB_PASSWORD=root
2.如果不使用用于laravel的docker-只需更改变量DB_HOST=localhost即可尝试此docker compose文件:
version: '3.5'
services:
db:
container_name: myapp_db
image: mysql:5.7
ports:
- "3307:3306"
restart: always
volumes:
- dbdata:/var/lib/mysql/
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=laravel_docker_db
networks:
- myapp-network
networks:
myapp-network:
driver: bridge
这种情况有两种情况:
1.如果您的laravel实例也在docker中-只需添加到.env文件的下一行:
DB_HOST=myapp_db
DB_PORT=3306
DB_DATABASE=laravel_docker_db
DB_USERNAME=root
DB_PASSWORD=root
2.如果不使用用于laravel的docker-只需在.env文件中更改变量DB_HOST=localhost
:
DB_HOST=db
DB_PORT=3306
DB_DATABASE=your database name
DB_USERNAME=root
DB_PASSWORD=root
在.env文件中:
DB_HOST=db
DB_PORT=3306
DB_DATABASE=your database name
DB_USERNAME=root
DB_PASSWORD=root
问题仍然是一样的,我有案例1:我在docker上使用laravel。脚本为laravel创建了2个容器,第一个为laravel,第二个为MySQL。您是否已将
网络:-myapp-network
添加到laravel容器中?docker在一个网络中连接容器,在容器内部,您也可以通过名称调用其他容器,如果您使用1个选项-changeDB_PORT=3306
Yes,根据您的回答,我已经在DB上下文中添加了网络,并且还定义了网络:myapp网络:驱动程序:其中的网桥。我想,如果我有一个已经在docker机器上运行的MYSQL docker容器,我只需要在我的laravel.env文件中添加配置。并从docker-compose.yml文件中删除MYSQL配置。你说什么?问题仍然是一样的,我有一个案例:我在docker上使用laravel。脚本为laravel创建了2个容器,第一个为laravel,第二个为MySQL。您是否已将网络:-myapp-network
添加到laravel容器中?docker在一个网络中连接容器,在容器内部,您也可以通过名称调用其他容器,如果您使用1个选项-changeDB_PORT=3306
Yes,根据您的回答,我已经在DB上下文中添加了网络,并且还定义了网络:myapp网络:驱动程序:其中的网桥。我想,如果我有一个已经在docker机器上运行的MYSQL docker容器,我只需要在我的laravel.env文件中添加配置。并从docker-compose.yml文件中删除MYSQL配置。你怎么说?你能给我们看一下你所有的docker compose.yml
内容吗?你遇到的具体问题是什么?你看过Docker文档了吗?@MuhammadSipra也发了你的env。我是说DB_*的env。你能给我们看一下你所有的Docker compose.yml
内容吗?你遇到的具体问题是什么?你看过Docker文档了吗?@MuhammadSipra也发了你的env。我是说DB_u*的env。3007
是发布的端口。因为您使用的是db
作为主机,所以端口应该是3006
,3007
是发布的端口。因为您使用的是db
作为主机,所以端口应该是3006
。