config.xml, может это порочная практика, и надо использовать config.d каталог и, как-то там это реализовывать, или через ENV устанавливать нужные настройки. Но, все-таки, config.xml реально же на вольюмы спроецировать? у меня такой docker-compose:
version: '3.3'
services:
clickhouse:
image: yandex/clickhouse-server:21.11.4.14
ports:
- "8123:8123"
- "9000:9000"
volumes:
- "/var/lib/clickhouse:/var/lib/clickhouse"
- "/etc/clickhouse-server/config.xml:/etc/clickhouse-server/config.xml"
restart: always
clickhouse-client:
image: yandex/clickhouse-client
- "/var/lib/clickhouse:/var/lib/clickhouse" - "/etc/clickhouse-server/config.xml:/etc/clickhouse-server/config.xml" ? что это ? это типа на хосте и в контейнере одинаковые пути что-ли? бред какой-то
нельзя по тому же пути на хост пробросить?
можно, но как-то странно. и про кавычки " я не уверен, я без кавычек пишу volumes: - $PWD/docker/clickhouse/etc/clickhouse-server/conf.d/:/etc/clickhouse-server/conf.d/ - $PWD/docker/clickhouse/var/lib/clickhouse/metadata/:/var/lib/clickhouse/metadata/ - $PWD/docker/clickhouse/var/log/clickhouse-server/:/var/log/clickhouse-server/
вроде, для 3- версии формата композа в примере с кавычками в документации
он создает каталог config.d, если ссылаться на него, а если еще файл прописывать config.xml, то он создает директорию config.xml
Вам нужен не volume, а bind (https://docs.docker.com/storage/bind-mounts/): If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. If you use --mount to bind-mount a file or directory that does not yet exist on the Docker host, Docker does not automatically create it for you, but generates an error.
Обсуждают сегодня