Предоставьте сокет Unix хост-системе изнутри из контейнера Docker

Я хотел бы запустить веб-сервер внутри контейнера Docker, который прослушивает сокет Unix, а не порт. Я нахожу много результатов по совместному использованию сокета Docker, но я не думаю, что это то, чего я хочу.

Я хочу, чтобы хост-система могла подключаться к сокету Unix, который прослушивается внутри контейнера.

Я использую docker-compose, поэтому обычный способ использования -v не работает.

Моя конфигурация сайта 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:

Тем не менее, он говорит, что я не могу подключиться к сокету, даже если он существует в этом месте на хосте.

Вы можете обмениваться данными с хост-машиной или даже с двумя контейнерами, используя один и тот же сокет. В общем случае двух контейнеров вы должны запустить два docker с хост-компьютера, совместно использующего том, который должен быть создан на хост-компьютере.

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...

И ContainerA, и containerB теперь могут использовать сокеты как /var/run/common_socket_dir/socketX для соединения. Конечно, хост-машина может использовать сокеты в этом томе для связи с контейнерами