version: "3.9"
networks:
opencart-network:
services:
webserver:
build:
context: .
dockerfile: ./docker/welcomepage/Dockerfile
args:
- DOMAIN_NAME=${DOMAIN_NAME:-domain.com}
- DOMAIN_EMAIL=${DOMAIN_EMAIL:-mail@domain.com}
ports:
- "80:80"
- "443:443"
networks:
- backend-network
volumes:
- ./certbot/www/:/var/www/certbot/:ro
certbot:
image: certbot/certbot
restart: unless-stopped
volumes:
- ./certbot/www/:/var/www/certbot/:rw
- ./certbot/conf/:/etc/letsencrypt/:rw
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot certonly --webroot --webroot-path=/var/www/certbot --email ${DOMAIN_EMAIL} --agree-tos --no-eff-email -d ${DOMAIN_NAME}; sleep 12h & wait $${!}; done;'"
networks:
- backend-network
Nginx conf
server {
listen 80;
server_name ${DOMAIN_NAME};
root /var/www/html;
index index.html;
charset utf-8;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
# Redirect from 80 to 443
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 default_server ssl;
server_name ${DOMAIN_NAME};
root /var/www/html;
index index.html;
charset utf-8;
ssl_certificate /etc/letsencrypt/ssl/live/${DOMAIN_NAME}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/ssl/live/${DOMAIN_NAME}/privkey.pem;
location ~ /\.(?!well-known).* {
deny all;
}
}
Выполняю команду:
docker-compose run --rm certbot certonly --webroot --webroot-path /var/www/certbot/ -d domain.com
Основная загвоздка, это вначале нужно обратиться к 80 порту от certbot, чтобы он выдал сертификаты, и потом их установить и перезаписать настройки nginx, как это правильно сделать?