Обменяйтесь файлом в образе с помощью docker-compose

#postgresql #docker #docker-compose #raspberry-pi

Вопрос:

Я использую образ docker arm64v8/postgres:14.0-alpine , который отлично работает на моем локальном Pi4, но я хотел бы изменить файл pg_hba.conf (изменив некоторые настройки IP). Мой файл docker-compose (извлечение) выглядит следующим образом:

 version: '2' services:  postgres:  image: arm64v8/postgres:14.0-alpine  volumes:  - database:/var/lib/postgresql/data  ports:  - 5432:5432  restart: unless-stopped  environment:   - POSTGRES_PASSWORD=xxx  - POSTGRES_DB=xxx  - POSTGRES_USER=xxx  networks:  - manager  volumes:  database:  networks:  manager:  driver: bridge  

Все работает нормально, но теперь я хотел бы, чтобы docker-compose переключил pg_hba.conf файл /var/lib/postgresql/data/ в pg_hba.conf мой локальный каталог (такой же, как файл docker-compose). Когда контейнер перезапускается, это должно быть сдержано.

Если есть лучшее решение, пожалуйста, дайте мне знать. Я хотел бы избежать создания собственных образов.

Спасибо

Комментарии:

1. Что мешает вам добавить том для этого файла?

2. Никогда не делал этого раньше :-). Как определить этот файл с помощью тома и убедиться, что он перезаписан? Спасибо за помощь

Ответ №1:

Мне кажется, что вы ищете это

 volumes:  - database:/var/lib/postgresql/data  - ./pg_hba.conf:/var/lib/postgresql/data/pg_hba.conf:ro  

Однако вы можете столкнуться с проблемой, связанной с монтированием тома docker и файла в одном и том же месте, поэтому другим решением является использование docker cp команды для копирования файла в смонтированное место после запуска контейнера, которая должна сохранить его как часть тома.

Вы также можете не использовать том, а затем просто смонтировать файлы в обычную папку на вашем локальном компьютере, которую вы можете редактировать

Ответ №2:

Я решил это следующим образом. Создал файл Dockerfile с изображением и использовал Copy его для копирования моего измененного файла.

 FROM arm64v8/postgres:14.0-alpine COPY ./pg_hba.conf /var/lib/postgresql/data/