php - 将 docker-compose 连接到 Laravel/Ubuntu 中的远程数据库
问题描述
我正在开发一个 laravel 项目,在该项目中,我使用内置图像(nginx、mysql、php 等)成功地使用 laravel 配置了 docker-compose。即使数据持久性工作正常,容器也工作正常。但现在我想将 docker-compose 连接到远程数据库,而不是使用 sql 容器数据库。它可以是我本地系统上的 localhost 数据库,它可能在 xampp 中,也可以是 AWS 远程数据库。简单来说,docker 应该在容器之外选择数据库。我尝试了使用 IP 地址的不同解决方案并对 .env 和 docker-compose.yml 进行了更改,但我没有找到任何解决方案。
这是我对 docker-compose.yml 的默认配置:
version: '3'
networks:
laravel:
services:
site:
build:
context: .
dockerfile: nginx.dockerfile
container_name: nginx
ports:
- 81:80
volumes:
- ./src:/var/www/html:delegated
depends_on:
- php
- mysql
- phpmyadmin
networks:
- laravel
mysql:
image: mysql:5.7.29
container_name: mysql
restart: unless-stopped
tty: true
ports:
- 3307:3306
environment:
MYSQL_DATABASE: test_db
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: secret
SERVICE_TAGS: dev
SERVICE_NAME: mysql
networks:
- laravel
volumes:
- ./mysql:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: always
container_name: phpmyadmin
depends_on:
- mysql
ports:
- "8081:80"
environment:
PMA_HOST: mysql
MYSQL_ROOT_PASSWORD: secret
UPLOAD_LIMIT: 1G
networks:
- laravel
php:
build:
context: .
dockerfile: php.dockerfile
container_name: php
volumes:
- ./src:/var/www/html:delegated
networks:
- laravel
volumes:
mysql:
这就是我的 .env 的样子:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test_db
DB_USERNAME=root
DB_PASSWORD=secret
如上所述,它工作正常,但我对如何在 laravel 中使用 docker-compose 集成/配置我的本地数据库或远程数据库(如 AWS)感到困惑。我不想用 sql 图像推送我的数据。如果有人可以在这方面帮助我了解需要进行哪些更改以及在哪里实施,我将不胜感激。
谢谢
解决方案
推荐阅读
- mysql - Binary Log 在 MYSQL 数据流中的可用性:有什么缺点和优点?
- javascript - Vue CSS滚动时如何在屏幕上移动对象
- node.js - 有没有办法只将附加的 blob 内容传递给 blob 触发 Azure Function?
- python-3.x - Azure 函数 - 使用 python 代码解压缩受密码保护的文件
- python - 如何在具有特定键的列表中查找字典?
- regex - 使用 sed 替换 Apache vhosts 文件中的 SSL 证书
- python - 打印特定值
- javafx - 多个属性上的 ChangeListener
- java - 空对象参考 Android Studio
- supabase - 如何在 Supabase 中获取“COUNT(*)”