У меня есть файл docker-compose, который выглядит так:
version: "3"
services:
mongoDB:
restart: unless-stopped
volumes:
- "/data/db:/data/db"
ports:
- "27017:27017"
- "28017:28017"
image: "andresvidal/rpi3-mongodb3:latest"
mosquitto:
restart: unless-stopped
ports:
- "1883:1883"
image: "mjenz/rpi-mosquitto"
FG:
privileged: true
network_mode: "host"
depends_on:
- "mosquitto"
- "mongoDB"
volumes:
- "/home/pi:/home/pi"
- "/boot:/boot"
image: "arkfreestyle/fg:v1.8"
entrypoint: /app/docker-entrypoint.sh
restart: unless-stopped
Я использую контейнер mongoDB для raspberry pi, созданного кем-то другим (я только что вытащил его из docker-hub), проблема в том, что если по какой-либо причине происходит неправильное завершение работы, контейнер не справляется с mongod Файл .lock в каталоге / data / db.
В этом случае при попытке перезапустить все контейнеры контейнер mongodb продолжает выход с кодом состояния 100, и единственный способ исправить это - вручную удалить файл блокировки, выполнив: sudo rm / data / db / mongod. заблокировать в моем терминале. Однако я хочу автоматизировать это и запустить эту команду в моем файле docker-compose, либо перед запуском контейнера mongodb, либо, если он пытается перезапустить.
Я не хочу связываться с Dockerfile mongodb, потому что он создан кем-то другим (кстати, полезно ли вносить изменения в Dockerfiles других людей?), Поэтому я хочу использовать свой файл docker-compose. Я не могу использовать точку входа или параметры команды, потому что я не хочу переопределять какие-либо команды по умолчанию в Dockerfile, я просто хочу запустить эту дополнительную команду, не вмешиваясь ни в что другое:
sudo rm /data/db/mongod.lock
И я хочу запустить это либо до запуска контейнера mongodb (в худшем случае он просто выведет файл не найден), либо если mongodb пытается перезапустить.
Я открыт для новых идей о том, как вы рекомендуете решать эту проблему, поэтому любая помощь приветствуется!