Как запустить Nginx SSL в docker?

#docker #nginx #ssl

Вопрос:

Эта конфигурация была протестирована без докера. Сайт на SSL был запущен без ошибок. Теперь, когда я хочу запустить эту конфигурацию сервера в docker, я не получаю ошибок во время установки, но сервер вообще не запускается.

файл nginx.dockerfile

     FROM nginx:stable-alpine

RUN mkdir -p /var/www/html
WORKDIR /var/www/html
RUN addgroup -g 1000 laravel amp;amp; adduser -G laravel -g laravel -s /bin/sh -D laravel

RUN chown laravel:laravel /var/www/html

COPY ./nginx/ssl/mysite.ru/mysite_ru.crt /etc/nginx/ssl/mysite.ru/mysite_ru.crt
COPY ./nginx/ssl/mysite.ru/mysite_ru.key /etc/nginx/ssl/mysite.ru/mysite_ru.key

RUN apk update 
amp;amp; ln -sf ./nginx/ssl/mysite.ru /etc/nginx/ssl/mysite.ru

ADD ./nginx/nginx.conf /etc/nginx/nginx.conf
ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf
 

./nginx/ssl/mysite_com папка содержит рабочие файлы: mysite_com. crt и mysite_com.key
Эти файлы проверяются без докера

докер-compose.yml

 services:
  site:
    build:
      context: .
      dockerfile: nginx.dockerfile
    container_name: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./src:/var/www/html:delegated
      - ./nginx/ssl:/etc/nginx/ssl
    depends_on:
      - php
      - mysql
      - postgres
    networks:
      - laravel
 

по умолчанию.conf

 server {
    listen 443 ssl;
    server_name  mysite.ru;
    ssl_certificate /etc/nginx/ssl/mysite.ru/mysite_ru.crt;
    ssl_certificate_key /etc/nginx/ssl/mysite.ru/mysite_ru.key;
    index index.php index.html;
    root /var/www/html/public;

        location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(. .php)(/. )$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
 

Скажите мне, в чем ошибка?
и где я могу просмотреть журналы nginx в docker?

Комментарии:

1. Вы не монтируете сертификаты в docker-compose volumes сопоставлениях спецификации для службы.

Ответ №1:

Похоже, вы не добавили и не скопировали свой сертификат SSL и файлы ключей в образ nginx.

Добавьте COPY ключевое слово до RUN apk update ... , а затем перезапустите nginx в конце, чтобы вы Dockerfile выглядели так, и я думаю, что это должно решить вашу проблему:

 FROM nginx:stable-alpine

RUN mkdir -p /var/www/html
WORKDIR /var/www/html
RUN addgroup -g 1000 laravel amp;amp; adduser -G laravel -g laravel -s /bin/sh -D laravel

RUN chown laravel:laravel /var/www/html

COPY mysite_com.crt /etc/nginx/ssl/mysite.com/
COPY mysite_com.key /etc/nginx/ssl/mysite.com/

RUN apk update 
amp;amp; ln -sf ./nginx/ssl/mysite_com /etc/nginx/ssl

ADD ./nginx/nginx.conf /etc/nginx/nginx.conf
ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf
 

Комментарии:

1. Я отредактировал свой ответ, я думаю, что вам просто нужно copy поместить файлы ключей и сертификатов в контейнер. Проверьте это еще раз.