Docker -компонентный файл с несколькими контейнерами базы данных в Laravel - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть Laravel проект с двумя mysql контейнерами базы данных. Во время заполнения мы извлекаем данные из базы данных один и отображаем / импортируем их в базу данных два.

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

Когда я пытаюсь заполнить базу данных, я получаю следующую ошибку:

enter image description here

1 Ответ

0 голосов
/ 14 апреля 2020

Оказывается в файле .env, который мне нужно было изменить:

.env

ACCESS_DB_PORT=3307 => ACCESS_DB_PORT=3306

Я считаю, что причина этого в том, что Laravel ищет контейнер внутри хоста, в этом случае порт 3307 не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...