我正在一个项目中工作,我们使用docker。该项目一直很好,直到上周五,今天我启动我的电脑(mac mini - macOS Sierra 版本 10.12.5 (16F73))时出现错误。 我正在尝试运行
docker-compose -f dev.yml -f docker-compose.yml up
,但是当我执行此操作时,它会返回以下消息:
db_1 | chmod: changing permissions of ‘/var/lib/postgresql/data’: Operation not permitted
.
我已经删除了所有 docker 容器和镜像
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
但错误仍然存在。
我的 docker-compose.yml 是这样的:
version: '2'
services:
rabbitmq:
restart: always
image: rabbitmq:3.6
environment:
RABBITMQ_DEFAULT_USER: my_user
RABBITMQ_DEFAULT_PASS: my_password
ports:
- "5672:5672"
- "15672:15672"
django:
build: ./django
command: gunicorn contactto.wsgi:application -b 0.0.0.0:8000
environment:
- "TZ=Brazil/East"
restart: always
volumes:
- ./django:/usr/src/app
- ./django/static:/usr/src/app/contactto/static
- ./logs:/logs/
- /asterisk/:/etc/asterisk/
ports:
- "8000:8000"
links:
- rabbitmq:rabbitmq
node:
build: ./node_6_8
environment:
- "TZ=Brazil/East"
volumes_from:
- django
nginx:
build: ./nginx
restart: always
environment:
- "TZ=Brazil/East"
ports:
- "80:80"
- "443:443"
volumes:
- /www/static
volumes_from:
- django
links:
- django:django
worker:
build: ./django
command: su -m worker -c "celery worker -A contactto.celeryconf -Q default -n default@%h"
environment:
- "TZ=Brazil/East"
restart: always
volumes:
- ./django:/usr/src/app
- ./django/static:/usr/src/app/contactto/static
- ./logs:/logs/
- /asterisk/:/etc/asterisk/
links:
- rabbitmq:rabbitmq
volumes:
dbdata:
我的 dev.yml 是这样的:
version: '2'
services:
db:
image: postgres:9.5
restart: always
environment:
POSTGRES_USER: my_user
POSTGRES_PASSWORD: my_password
POSTGRES_DB: my_db
volumes:
- /psqldata:/var/lib/postgresql/data
django:
environment:
- "DJANGO_CONFIG_MODE=Development"
depends_on:
- db
worker:
environment:
- "DJANGO_CONFIG_MODE=Development"
links:
- db:db
任何帮助将不胜感激。
我进入
/
并继续分析文件夹。然后我在那里设置了命令 ls -la
,我看到该文件夹属于 root
用户。首先,我删除了文件夹 sudo rm -rf psqldata
,然后设置了权限 sudo chmod 777 /
以使用我的用户 mkdir psqldata
创建该文件夹,现在它可以正常工作了。不知道为什么之前还能用,突然就不动了。希望这个回答也能帮到你。
旧文件夹
ls -la
drwxr-xr-x 2 root wheel 68 Jun 19 14:58 psqldata
新文件夹
ls -la
drwxr-xr-x 2 gtmiyabe wheel 68 Jun 20 10:07 psqldata
使用命名卷而不是绑定卷
基于这个答案,这对我有帮助: https://superuser.com/a/1781335
注意左侧没有斜线:
docker-compose.yml:
version: '3'
services:
db:
image: postgres
volumes:
- pg-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
volumes:
pg-data: