Я работаю над Dockerfile для веб-приложения, которое будет использовать nginx-proxy а>контейнер. У него также есть интерфейс командной строки для работы с доменом приложения (создание/изменение БД, запуск заданий очистки и т. д.).
В 99% случаев, когда я загружаю контейнер, я хочу использовать веб-приложение. У меня есть EXPOSE 3000
в Dockerfile, и он отлично работает для NGINX-proxy. Nginx-proxy использует docker-gen, который отслеживает события start
и stop
докера и перестраивает Конфигурация NGINX на основе открытых портов.
Проблема возникает, когда я хочу запустить контейнер на основе CLI. Я не хочу EXPOSE 3000
. Я хочу отключить порт 3000, чтобы NGINX-прокси не менял конфигурации NGINX.
Это возможно с docker run
? Чтение документов не дало ясности, а попытка docker run -p ''
не сработала (я получил ошибку docker: No port specified: ::<empty>.
).
Честно говоря, это немного придирка, и это не так уж важно. Я могу взять EXPOSE 3000
из Dockerfile и просто выполнить -p 3000
в командной строке. Мне просто нравится иметь его в Dockerfile, поэтому он включен по умолчанию, и мне просто нужно отключить его в нескольких случаях, когда он мне понадобится.
Я также знаю, что могу использовать второй Dockerfile, наследуемый от первого.
Мне просто любопытно, можно ли отменить публикацию порта, выставленного в Dockerfile, когда я делаю docker run
(или, возможно, в docker-compose).