我正在尝试netbox
根据他们在 Docker Hub 上的标准指南运行,但略有不同的是,我需要在容器启动postgres
时恢复现有的转储。postgres
我尝试了一些方法,例如command
在文件中定义一个选项docker-compose
(以及更多组合):
sleep 2 && psql -U netbox -f netbox.sql
sleep
需要在服务启动psql
之前防止命令运行。postgres
或者定义一个执行数据库恢复的 bash 脚本,但是所有这些方法都会导致容器在该命令/脚本运行后退出。
我最后的手段是使用 bash 分叉,这就是postgres
代码片段的docker-compose
样子:
postgres:
image: postgres:13-alpine
env_file: env/postgres.env
command:
- sh
- -c
- (sleep 3 && cd /home && psql -U netbox -f netbox.sql) & su -c postgres postgres
volumes:
- ./my_db:/home/
- netbox-postgres-data:/var/lib/postgresql/data
可悲的是,这会导致:
postgres: could not access the server configuration file
"/var/lib/postgresql/data/postgresql.conf": No such file or directory
如果我省略 的command
部分docker-compose
,容器启动正常,我可以导航和ls
错误消息中的目录,但这不是我真正需要的,因为这个容器将继续成为一个更大的生态系统丛林的一部分,几乎没有事后无法控制。
可能是我的 bash 分叉还是问题出在其他地方?
提前致谢