1

I'm new to docker and try to build an image based on Alpine to take care of my websites with HTTPS connexions. Currently i'm at the step to make it work from the container so i'm not finished yet with my 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

From there i start my container :

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

I then install certbot-nginx, and start it to generate my certificate, which i copy in my /var/www/localhost/htdocs/example.fr/ to access it from outside the container. Finally i start php-fpm7 & nginx.

My nginx config :

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;
}

I'm probably missing something simple but i'm stuck since a week. thanks !

idiocrate
  • 23
  • 4

1 Answers1

2

Rather than re-invent the wheel, perhaps take a look at some boilerplate projects such as:

https://github.com/wmnnd/nginx-certbot

This covers your needs:

  • nginx
  • certbot
Carlos
  • 136
  • 3
  • 2
    Thanks for the link, the main idea is to progress and understand by building by myself an image though. – idiocrate Mar 07 '19 at 08:06
  • 1
    More of a reason to use the github repo. Clone the project and deconstruct it and rebuild it at your pace. That and use the Docker documentation. – Carlos Mar 07 '19 at 08:07