Как вариант:
nginx на основной системе:
./nginx/sites-enabled/site1.conf:
{
listen 80;
server_name site1.example.org;
location / {
proxy_pass: http://127.0.0.1:8081;
}
}
./nginx/sites-enabled/site2.conf:
{
listen 80;
server_name site2.example.org;
location / {
proxy_pass: http://127.0.0.1:8082;
}
}
Контейнеры для site1:
docker-compose.yml
nginx:
volumes:
- ./:/opt/site1-root
- ./config/nginx:/etc/nginx/conf.d
ports:
- "0.0.0.0:8081:80"
./conf/nginx/site1_local.conf
{
listen 80;
local / {
root /opt/site1-root;
}
}
Контейнеры для site2:
docker-compose.yml
nginx:
volumes:
- ./:/opt/site2-root
- ./config/nginx:/etc/nginx/conf.d
ports:
- "0.0.0.0:8082:80"
./conf/nginx/site2_local.conf
{
listen 80;
local / {
root /opt/site2-root;
}
}
Можно без nginx в контейнерах обойтись, и сразу биндить порт в основной системный nginx, можно сделать свой network - смотря что у вас крутится и как организовано.