Извините за повторный пост. Ранее я запутался из-за другого, не связанного вопроса, и сокет больше не использовался из-за ошибки в моей конфигурации.
Вот где я сейчас нахожусь:
[crit] 274#274: *7 connect() to unix:/var/discourse/shared/standalone/nginx.http.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.160.1, server: <domain>, request: "GET / HTTP/2.0", upstream: "http://unix:/var/discourse/shared/standalone/nginx.http.sock:/", host: "<domain>"
Я выполнил chmod 777 shared/standalone/nginx.http.sock, чтобы временно обойти проблему с правами доступа, и теперь получил:
[error] 203#203: *1 connect() to unix:/var/discourse/shared/standalone/nginx.http.sock failed (111: Connection refused) while connecting to upstream, client: 192.168.160.1, server: <domain>, request: "GET / HTTP/2.0", upstream: "http://unix:/var/discourse/shared/standalone/nginx.http.sock:/", host: "<domain>"
Очевидно, я делаю что-то не так, но не знаю что. Обратите внимание, что я не использую NPM, а nginx-proxy, который работает немного иначе: в частности, он автоматически обнаруживает контейнеры Docker, определяющие VIRTUAL_HOST, и генерирует для них конфигурацию. Поэтому я добавил только часть location / { ... }, относящуюся к Discourse, и не трогал файлы в sites-available с директивами listen.
Я заметил, что контейнер Discourse находится в цикле перезапусков со статусом Restarting (100) 7 seconds ago. Это происходит потому, что он жалуется на невозможность удалить сокет. Действительно, это был не настоящий сокет, а каталог, вероятно, из-за неправильных манипуляций с монтированием томов для его экспорта в контейнер nginx-proxy.
Я удалил каталог, перезапустил Discourse, и теперь это сокет. Однако я не могу экспортировать его как том в nginx-proxy.
Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting “/var/discourse/shared/standalone/nginx.http.sock” to rootfs at “/var/discourse/shared/standalone/nginx.http.sock”: mount /var/discourse/shared/standalone/nginx.http.sock:/var/discourse/shared/standalone/nginx.http.sock (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
Оказалось, мне просто нужно было смонтировать сокет в /tmp/nginx.http.sock, а не оставлять тот же путь. В конце концов, кажется, мне это удалось!