@VladimirKrasnov

Как можно связать два контейнера в Docker?

Разбираюсь в докере и столкнулся с проблемой. У меня есть контейнер с RabbitMQ, и ему для работы в конфиге нужно указать внешний ip приложения, это у меня контейнер App. Так вот этот внешний ip он динамический и постоянно приходится руками менять конфиг кролика, что не очень удобно. Можно ли как нибудь задать статический ip для app или связать их?
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
            - ./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
        networks:
            - postgres
    #Nginx Service
    webserver:
        image: nginx:alpine
        container_name: webserver
        restart: unless-stopped
        tty: true
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - ./:/var/www
            - ./docker/nginx/conf.d/:/etc/nginx/conf.d/
        networks:
            - postgres
    #Redis
    redis:
        image: 'redis:alpine'
        ports:
            - "6379:6379"
    #PostgreSQL        
    postgres:
        container_name: postgres_container
        image: postgres
        hostname: postgres
        environment:
            POSTGRES_DB: postgres
            POSTGRES_USER: postgres
            POSTGRES_PASSWORD: secret
            PGDATA: /data/postgres
        volumes:
            - postgres:/data/postgres
        ports:
            - "5432:5432"
        networks:
            - postgres
        restart: unless-stopped
  
    pgadmin:
        container_name: pgadmin_container
        image: dpage/pgadmin4
        environment:
            PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
            PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
        volumes:
            - pgadmin:/root/.pgadmin
        ports:
            - "${PGADMIN_PORT:-5050}:80"
        networks:
            - postgres
        restart: unless-stopped  
        depends_on: 
            - postgres     
    #RabbitMQ
    rabbit:
        image: "rabbitmq:3-management"
        hostname: "rabbit"
        environment:
            RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
            RABBITMQ_DEFAULT_USER: "rabbitmq"
            RABBITMQ_DEFAULT_PASS: "rabbitmq"
            RABBITMQ_DEFAULT_VHOST: "/"
        ports:
            - "15672:15672"
            - "5672:5672"
        labels:
            NAME: "rabbitmq"    
        networks:
            - postgres     
    #ElasticSearch
    elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:5.4.3
        ports:
            - "9200:9200"
            - "9300:9300"
        networks:
            - postgres                      
#Docker Networks
networks:
  postgres:
    driver: bridge
volumes:
    postgres:
    pgadmin:
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 2
Укажите в конфиге имя сервиса в качестве ip – в данном случае app
Ответ написан
А Вы случаем не путаете?
Может быть в App надо указать IP (имя) rabbit? (порты смущают, да и основной принцип работы кролика вроде бы во входящих подключениях)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы