Я новичок в докере и пытаюсь создать образ на основе Alpine, чтобы заботиться о моих веб-сайтах с подключениями HTTPS. В настоящее время я нахожусь на этапе, чтобы заставить его работать из контейнера, поэтому я еще не закончил с моим Dockerfile my Dockerfile:
FROM alpine
RUN apk update \
&& apk upgrade \
&& apk add nginx php7 php7-fpm php7-opcache php7-gd php7-mysqli php7-zlib php7-curl \
&& mkdir /run/nginx
EXPOSE 80
Оттуда я запускаю свой контейнер:
docker run -ti -p 80:80 -p 443:442 -v /home/docker/web/conf:/etc/nginx/conf.d/ -v /home/docker/web/www:/var/www/localhost/htdocs test
Затем я устанавливаю certbot-nginx и запускаю его для генерации сертификата, который копирую в свой /var/www/localhost/htdocs/example.fr/, чтобы получить к нему доступ извне контейнера. Наконец я запускаю php-fpm7 и nginx.
Моя конфигурация nginx:
server {
server_name example.fr;
root /var/www/localhost/htdocs/example.fr;
index index.html index.htm index.php;
listen [::]:443 ssl;
server_tokens off;
# configure php
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
index index.html index.htm index.php;
}
location ~* \.pem {
deny all;
}
ssl_certificate /var/www/localhost/htdocs/example.fr/fullchain.pem;
ssl_certificate_key /var/www/localhost/htdocs/example.fr/privkey.pem; # managed by Certbot
}
server {
if ($host = example.fr) {
return 301 https://$host$request_uri;
}
# managed by Certbot
server_name example.fr;
listen 80;
listen [::]:80;
#return 404;
}
Я, наверное, упускаю что-то простое, но я застрял на неделе. Спасибо !
Вместо того, чтобы заново изобретать колесо, возможно, взгляните на некоторые типовые проекты, такие как:
https://github.com/wmnnd/nginx-certbot
Это покрывает ваши потребности:
nginx
certbot