2

I am trying to connect to couchdb through the container but my app is not seeing it.

However if I use the external address 123.456.789.123:12345 (server_ip:external_port) it works but I need a connection through network with the internal port 5986.

Docker-Compose.yml

version: '3'
    services:
      couchdb:
        image: couchdb:latest
        restart: always
        volumes:
          - couchdb-data-volume:/usr/local/var/lib/couchdb
        env_file: .env.docker
        ports:
          - "12345:5986"
        networks:
          app-net:
            aliases:
              - couchdb
      app:
        build: .
        image: app
        restart: always
        depends_on:
          - couchdb
        env_file: .env.docker  
    networks:
      app-net:
        driver: bridge
    volumes:
      couchdb-data-volume:

ENV FILE

NODE_ENV=production
COUCHDB_SERVER=http://user:pass@couchdb:5986
COUCHDB_USER=user
COUCHDB_PASSWORD=pass

I Also tried links instead of networks but the same issue.

 links:
 - couchdb

Any Ideas ?

1 Answer 1

1

Your mistake is that you are did not register the app service on the app-net network. To allow containers to connect with one another, they have to share a network and then use the image name as the domain name. Docker provides a network internal DNS service.

version: '3'
services:
  couchdb:
    image: couchdb:latest
    restart: always
    volumes:
      - couchdb-data-volume:/usr/local/var/lib/couchdb
    env_file: .env.docker
    ports:
      - "12345:5986"
    networks:
      app-net:

  app:
    build: .
    image: app
    container_name: app
    restart: always
    depends_on:
      - couchdb
    env_file: .env.docker  
    networks:
      - app-net

volumes:
  couchdb-data-volume:

networks:
  app-net:

The URL from the app to the couchdb service would be http://couchdb:5986. To test this, open bash inside the app service with docker exec -it app. This depends on the container_name setting.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.