Exponha um soquete Unix ao sistema host de dentro de um contêiner Docker

Eu gostaria de executar o servidor aweb dentro de um contêiner Docker que ouve um soquete Unix, em vez de uma porta. Estou encontrando muitos resultados no compartilhamento do soquete do Docker, mas não acho que seja isso que quero.

Quero que o sistema host seja capaz de se conectar ao soquete Unix que está sendo ouvido dentro do contêiner.

Estou usando docker-compose, então a maneira usual de usar -v não funciona.

Minha configuração do site ngix:

server {                                                                                                listen 80; listen [::]:80;                                                                server_name foo.com www.foo.com;    location / {                                                                                 proxy_pass http://unix:/var/lib/docker/volumes/app_shared/_data/app.https.sock:;               proxy_set_header Host $http_host;                                                                    proxy_http_version 1.1;                                                                              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                                         proxy_set_header X-Forwarded-Proto https;                                                        } 

docker-compose.yml

version: '3'services:        web:    build: .    volumes:            - shared:/var/app    command: "npm start"volumes:   shared:

No entanto, diz que não consigo me conectar ao soquete, mesmo que exista neste local no host.

Você pode comunicar a máquina host ou até dois contêineres usando o mesmo soquete. No caso geral de dois contêineres, você deve iniciar os dois dockers da máquina host compartilhando um volume que deve ser criado na máquina host.

docker run --name "containerA" -v /var/run/common_socket_dir:/var/run/common_socket_dir...docker run --name "containerB" -v /var/run/common_socket_dir:/var/run/common_socket_dir...

Ambos, containerA e containerB agora podem usar sockets como / var / run / common_socket_dir / socketX para interconectar. Claro, a máquina host poderia usar os soquetes neste volume para se comunicar com contêineres