#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
поместить файлы ключей и сертификатов в контейнер. Проверьте это еще раз.