mongodb - 重新启动我的服务 systemd 后无法访问 docker-compose 卷
问题描述
我使用两个服务创建 docker-compose:python api 和 mongodb,在第一次启动后,sudo docker-compose up
它会在内部为 mongo db 创建一个文件\data
,之后sudo docker-compose down
又一次sudo docker-compose up
mongo 无法访问 \data 中的文件。显然权限有问题,但我不知道到底是什么。
但是,如果我只是停止容器而没有sudo docker-compose down
再次sudo docker-compose up
一切正常。
所以之后一切都出错了down
系统服务:
[Unit]
Description=RestAPI imp
Requires=docker.service
After=docker.service
[Service]
Type=simple
WorkingDirectory=/home/entrant/myserv
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
码头工人-compose.yml
version: '3.5'
services:
web_dev:
build: .
ports:
- "8080:8080"
volumes:
- .:/app
environment:
- ENV=PROD
- DATABASE_URL=mongodb://mongodb:27017/myserv?authSource=admin&replicaSet=myrepl
depends_on:
- mongodb
command: deploy/wait-for-it.sh mongodb:27017 -- gunicorn -b 0.0.0.0:8080 index:api.app -w 9
mongodb:
image: mongo:4.0.12-xenial
container_name: "mongodb"
environment:
- MONGO_INITDB_DATABASE=myserv
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
volumes:
- ./data/db:/data/db
ports:
- 27017:27017
command: bash -c "
mongod --fork --replSet myrepl --bind_ip_all --smallfiles --logpath=/dev/null
&& mongo --eval 'rs.initiate()'
&& mongod --shutdown
&& mongod --replSet myrepl --bind_ip_all --smallfiles --logpath=/dev/null
"
networks:
default:
name: web_dev
解决方案
推荐阅读
- excel - 运行时错误“91”:代码运行后未设置对象变量或块变量
- android - 接收 Recyclerview 数据时的 ProgressBar
- wpf - 相当于 Visual Studio 添加新页面 (WPF) 的命令行
- azure-active-directory - 可以使用数据工厂提取所有 Azure Active Directory 用户吗?
- authentication - 创建工业应用程序(本机/Web)的注意事项
- azure - 根据上次成功运行日期在数据工厂中过滤文件
- amazon-web-services - 用于在 AWS 上长时间运行查询的无服务器解决方案
- angular - 当属性'x'是私有的时有角度->错误“不能在'y'组件之外使用,因为x是私有的”但是当它是公共的时它显示x在y中不存在
- kubernetes - Kubernetes - 如何将信任库路径和密码传递给 JVM 参数
- c++ - 如何让 for 循环在 txt 文件中进行搜索?