首页 > 解决方案 > 重新启动我的服务 systemd 后无法访问 docker-compose 卷

问题描述

我使用两个服务创建 docker-compose:python api 和 mongodb,在第一次启动后,sudo docker-compose up它会在内部为 mongo db 创建一个文件\data,之后sudo docker-compose down又一次sudo docker-compose upmongo 无法访问 \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

标签: mongodbdockerpermissionsdocker-composesystemd

解决方案


推荐阅读