【问题标题】:Docker-compose file with multiple database containers in LaravelLaravel 中具有多个数据库容器的 Docker-compose 文件
【发布时间】:2020-07-26 21:29:23
【问题描述】:

我有一个带有两个 mysql 数据库容器的 Laravel 项目。在播种期间,我们从数据库一中获取数据并将其映射/导入到数据库二中。

docker-compose.yml

version: '3'
services:

  #PHP Service
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: digitalocean.com/php
    container_name: app
    restart: unless-stopped
    tty: true
    environment:
      SERVICE_NAME: app
      SERVICE_TAGS: dev
    working_dir: /var/www
    volumes:
      - ./:/var/www
      - ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
    ports:
      - "9000:9000"
    networks:
      - app-network

  #Nginx Service
  webserver:
    image: nginx:alpine
    container_name: webserver
    restart: unless-stopped
    tty: true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./:/var/www
      - ./nginx/conf.d/:/etc/nginx/conf.d/
    networks:
      - app-network

  #MySQL Service
  db:
    image: mysql:5.7.29
    container_name: db
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: aas
      MYSQL_USER: aas_admin
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - dbdata:/var/lib/mysql/
      - ./mysql/my.cnf:/etc/mysql/my.cnf
    networks:
      - app-network

  access_db:
    image: mysql:5.7.29
    container_name: access_db
    restart: unless-stopped
    tty: true
    ports:
      - "3307:3306"
    environment:
      MYSQL_DATABASE: access_aas
      MYSQL_USER: aas_admin
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - accessdbdata:/var/lib/mysql/
      - ./mysql/my.cnf:/etc/mysql/accessmy.cnf
    networks:
      - app-network

  #Redis
  cache:
    image: redis:rc-alpine3.11
    container_name: cache
    ports:
      - "6382:6379"
    networks:
      - app-network

#Docker Networks
networks:
  app-network:
    driver: bridge
#Volumes
volumes:
  dbdata:
    driver: local
  accessdbdata:
    driver: local

.env

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=aas
DB_USERNAME=aas_admin
DB_PASSWORD=secret

ACCESS_DB_CONNECTION=access
ACCESS_DB_HOST=access_db
ACCESS_DB_PORT=3307
ACCESS_DB_DATABASE=access_aas

我可以使用上述两个数据库的凭据通过 SequelPro 访问数据库。我也可以创建迁移,但是当我从 access_db 查询数据时,播种似乎是一个问题

当我尝试为数据库播种时,我收到以下错误:

【问题讨论】:

  • 请以文本形式分享错误消息以及您的调试尝试
  • 图像不是代码,而是控制台输出,问题已经解决。见下文。
  • 是的,我看到它已经解决了。我建议你成为一个优秀的 SO 公民,让你的问题对未来的访问者有用(链接也描述了这一点)。哦,好吧。

标签: mysql laravel docker docker-compose


【解决方案1】:

结果出现在我需要更改的 .env 文件中:

.env

ACCESS_DB_PORT=3307 => ACCESS_DB_PORT=3306

我认为这是因为 Laravel 正在主机内部寻找一个容器,在这种情况下端口 3307 不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多