首页 > 解决方案 > 将 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 图像推送我的数据。如果有人可以在这方面帮助我了解需要进行哪些更改以及在哪里实施,我将不胜感激。

谢谢

标签: phpmysqllaraveldockerdocker-compose

解决方案


推荐阅读