Dockerfile для копирования файлов - PullRequest
0 голосов
/ 01 октября 2019

Я пишу Dockerfile для создания образа nginx с базовой аутентификацией http. Мне нужно скопировать мой локальный файл nginx.conf и файл, содержащий информацию для входа (htpasswd), и я записываю ее в свой Dockerfile, но, похоже, он не работает. Когда я смотрю на файл nginx.conf в контейнере, он по-прежнему используется по умолчанию, а функция аутентификации отсутствует на веб-странице. Помогите?

FROM nginx:latest

ADD ./gilbard /usr/share/nginx/html

COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./htpasswd /etc/nginx/conf.d/.htpasswd

# Expose port
EXPOSE 80

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

файл nginx.conf локально хранится в /etc/nginx/nginx.conf, по крайней мере, на компьютере с Ubuntu.

Похоже, что ваш dockerfile копирует nginx.conf, используя текущее местоположение файла Docker.

У вас есть файл nginx.conf, который хранится в том же каталоге, что и ваш файл Dockerfile?

Другими словами, ваша копия должна выглядеть следующим образом:

COPY /etc/nginx/nginx.conf /etc/nginx/nginx.conf

Однако с этим могут быть проблемы с разрешениями. Я не слишком уверен, но попробуй!

Другой альтернативой является:

sudo docker cp /etc/nginx/nginx.conf container_id:/etc/nginx/nginx.conf
0 голосов
/ 01 октября 2019

Ваш подход правильный.

Если файлы COPY не существуют в рабочем каталоге, сборка выдаст ошибку.

Возможно, в вашей сборке | run произошла ошибкакоманды, пожалуйста, добавьте их к вашему вопросу.

Я могу повторить ваш вопрос, и мой nginx.conf скопирован правильно.

more ./nginx.conf
Hello Freddie

docker build --tag=58188265 --file=./Dockerfile .

docker run --interactive --tty 58188265 /bin/sh -c "more /etc/nginx/nginx.conf"
Hello Freddie
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...