I have such docker-compose.yml (not a full list here):
version: '2'
services:
nginx:
build: ./nginx/
ports:
- 8080:80
links:
- php
volumes_from:
- app
networks:
app_subnet:
ipv4_address: 172.16.1.3
php:
build: ./php/
expose:
- 9000
volumes_from:
- app
networks:
app_subnet:
ipv4_address: 172.16.1.4
networks:
app_subnet:
driver: bridge
ipam:
config:
- subnet: 172.16.1.0/24
gateway: 172.16.1.1
After docker-compose up
I got such an error:
User specified IP address is supported only when connecting to networks with user configured subnets
So I'm creating subnet with docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_subnet
But this doesn't solve the problem because docker-compose creates the subnet with name dev_app_subnet on the fly. And my subnet is not used - I'm getting the same error. The main purpose of doing this is to assign static IP for nginx service - open my project web url from etc/hosts file.
[SOLVED] Found the solution. When pointing to the network, we should use flag "external" telling compose that network is already created and should be taken outside (otherwise it will be created on the fly with project prefix):
networks:
app_subnet:
external: true
So, after that docker-compose will attach containers to existing app_subnet
Before that the subnet must be created:
docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_subnet