Hi, I am a newbie to Docker.
I am trying to run my application containing from multiple containers
Here is my docker-compose.yml file
version: '3.3'
services:
php-service:
container_name: 'php-service'
build: './php-service'
networks:
- backend
ports:
- '8666:8666'
go-service:
container_name: 'go-service'
build: './go-service'
ports:
- '8825:8825'
- '8835:8835'
volumes:
- './go-service:/go/src/go-service'
networks:
- frontend
- backend
depends_on:
- 'mongo'
- 'consul'
consul:
image: 'consul:latest'
networks:
- backend
ports:
- "8300:8300"
- "8400:8400"
- "8500:8500"
- "8600:53/udp"
mongo:
image: 'mongo:latest'
container_name: 'mongo'
networks:
- backend
ports:
- '27100:27017'
networks:
frontend:
internal: false
backend:
internal: true
What I want to achieve.
The Outside World - is a network space of a hosting machine where the Docker daemon is running.
-
Go-Service, PHP-Service, Consul and Mongo Db communicate over internal network not exposed to the outer world. Let’s call this network backend.
-
I want services inside backend network to be able to send outgoing requests to outer world
-
Another network is for the outside world, I need to expose only specific ports. In my case I want to expose 8825 and 8835 only. So that ports will be exposed as localhost:8825 and localhost:8835 on the hosting machine
Is it possible to get the desired configuration?
Or maybe I am doing something wrong, please suggest any other good way to achieve this.
Thank you so much