Как подключить разные Docker-контейнеры, работающие в другой сети - PullRequest
0 голосов
/ 25 сентября 2019

В моем файле docker-compose есть две службы.Один для приложения Python django и другой для базы данных MySQL.Когда я использую одну и ту же сеть для обоих контейнеров, приложение django может без каких-либо ошибок соединяться с базой данных, но всякий раз, когда я использую разные сети для них, django не может соединиться с mysql.

Теперь мой вопрос -

Как подключить несколько контейнеров, работающих в разных сетях

Файл Docker Compose:

mysql_database:
    image: mysql_db:latest
    container_name: mysql_db
    command:
        mysqld --default-authentication-plugin=mysql_native_password      
    volumes:
        - "/mysql:/var/lib/mysql-files"
    ports:
        - "3306:3306"
    restart: always
    stdin_open: true
    tty: true
    environment:
        - MYSQL_HOST=localhost
        - MYSQL_PORT=3306
        - MYSQL_DATABASE=myDataBase
        - MYSQL_USER=myname
        - MYSQL_PASSWORD=somepassword
        - MYSQL_ROOT_PASSWORD=somepassword

    networks:
        mysql_network:
            ipv4_address: 172.16.0.18


django_app:
    image: backend_app:latest
    container_name: backend_app
    build:
        context: .
        dockerfile: Dockerfile
    tty: true
    ports:
        - "8000:8000"
    volumes:
        - ./my_backend_app:/code/
    networks:
        - backend_network
    depends_on:
        - mysql_database

    links:
        - mysql_database

    command: >
        bash -c "apt update
        && apt install python3-dev
        && source ./venv/bin/activate
        && python manage.py makemigrations
        && python manage.py migrate
        && python manage.py runserver 0.0.0.0:8000"


networks:
    backend_network:
        driver: bridge

    mysql_network:
        driver: bridge
        ipam:
            config:
                - subnet: 172.16.0.0/16


volumes:
    my_backend_app:

1 Ответ

1 голос
/ 25 сентября 2019

Вы можете добавить несколько сетей к одной услуге.В этом случае вам нужно добавить mysql_network в django_app:

networks:
  - backend_network
  - mysql_network

См. Документацию по docker-compose для сети для более подробной информации по этой теме

...