#docker #nginx
#docker #nginx
Вопрос:
В docker-compose это работает нормально:
nginx:
image: nginx:latest
network_mode: host
volumes:
- web_server/local-nginx.conf:/etc/nginx/nginx.conf
ports:
- 8080:8080
Однако, если я попытаюсь сделать то же самое, используя docker run
напрямую:
$ docker run --network host -p 8080:8080
-v "web_server/local-nginx.conf:/etc/nginx/nginx.conf"
nginx:latest
Я получаю ошибки:
docker: Error response from daemon: create web_server/local-nginx.conf: "web_server/local-nginx.conf"
includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.
If you intended to pass a host directory, use absolute path.
Я также пробовал использовать --mount
, с теми же результатами:
$ docker run -p 8080:8080 --network host
--mount src="web_server/local-nginx.conf",dst="/etc/nginx/nginx.conf"
nginx:latest
Комментарии:
1. Это может быть закрыто, поскольку это было вызвано опечаткой (при попытке указать абсолютный путь, как предполагала ошибка).
Ответ №1:
В левой части docker run -v
параметра должно быть имя тома или абсолютный путь. Docker Compose понимает относительные пути в volumes:
, а обычный Docker — нет.
Вам нужно включить имя текущего каталога в параметр. Использование $PWD
переменной окружения для этого является обычным:
docker run ...
-v "$PWD/web_server/local-nginx.conf:/etc/nginx/nginx.conf"
...
Комментарии:
1. Что ж.. Я думал, что пробовал это — поскольку это то, о чем говорится в ошибке, но, должно быть, я допустил опечатку.