ports:[127.3.2.1:8000:8000]expose в информации о контейнере указывает, что такие-то порты используются, никаких действий не делается. --net=host и уберите --port (оно бесмысленно будет). Естественно 80-й порт на хосте должен быть свободен, в противном случае правьте конфиг nginx для контейнера.host.docker.internal (документация). На Маке доступен loopback по адресу docker.for.mac.localhost, на Windows противоречивые вещи накопал. Как я понял --net=host не нужен в этом случае, но стоит проверить. return 404 воткнуть return 301 https://$server_name$request_uriif ($scheme = http)./etc/letsencrypt/challenges, которую nginx сможет читатьserver {
server_name some.domain;
...
location /.well-known/acme-challenge {
root /etc/letsencrypt/challenges;
}
}Дальше необходимо править конфиги доменов в /etc/letsencrypt по части webroot, заменяя его на путь до созданной директории.certbot renew будет вам обновлять. FROM ruby:2.5-alpine
ADD . /app
WORKDIR /app
RUN bundle install
CMD ["bundle", "exec", "passenger", "start"]version: '2'
services:
passenger:
build: ./
restart: always
#ports:
# - 3000:3000 (для дебага)
nginx:
image: nginx:mainline-alpine
restart: always
volumes:
#- ./nginx.conf:/etc/nginx/nginx.conf
- ./nginx-site.conf:/etc/nginx/conf.d/passenger.conf
#- /path/to/static/:/path/in/container/proxy_pass http://passenger:3000; webroot-path = /some/path, в следствие чего будет автоматически использоваться плагин webroot, через который работает "авто"настройка nginx/apache.location ^~ /.well-known/acme-challenge/ {
root /some/path;
}Я предпочитаю прописать путь к токенам в переменную в nginx.conf для консистентности конфигов сайтов.certbot certonly -d new.domain.tld и certbot renew