gpt4 book ai didi

django - 我如何修复docker-compose.yml,在使用Django安装Mayan-EDMS时出错

转载 作者:行者123 更新时间:2023-12-02 18:08:56 27 4
gpt4 key购买 nike

我正在尝试使用docker-compose与Django应用和Postgres数据库一起安装Mayan-EDMS镜像,但是每次,我尝试使用docker-compose up构建docker-compose都会产生错误。

ERROR: yaml.parser.ParserError: while parsing a block mapping
in "./docker-compose.yml", line 8, column 3
expected <block end>, but found '<block mapping start>'
in "./docker-compose.yml", line 29, column 4

这是我的 docker-compose.yml
docker-compose包含postgres:11.4-alpine,redis:5.0-alpine和mayanedms / mayanedms:3
version: "3"

networks:
bridge:
driver: bridge

services:
app:
container_name: django
restart: always
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
environment:
- DB_NAME=app
- DB_USER=insights
- DB_HOST=db
- DB_PORT=5432
depends_on:
- db
command: >
sh -c "mkdir -p logs media &&
python manage.py wait_for_db &&
python manage.py runserver 0.0.0.0:8000"

db:
image: postgres:11.4-alpine
container_name: postgres
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=insights
- POSTGRES_DB=app

redis:
command:
- redis-server
- --appendonly
- "no"
- --databases
- "2"
- --maxmemory
- "100mb"
- --maxclients
- "500"
- --maxmemory-policy
- "allkeys-lru"
- --save
- ""
- --tcp-backlog
- "256"
- --requirepass
- "${MAYAN_REDIS_PASSWORD:-mayanredispassword}"
image: redis:5.0-alpine
networks:
- bridge
restart: unless-stopped
volumes:
- redis_data:/data




mayanedms:
image: mayanedms/mayanedms:3
container_name: mayanedms
restart: unless-stopped
ports:
- "80:8000"
depends_on:
- db
- redis
volumes:
- mayanedms_data:/var/lib/mayan
environment: &mayan_env
MAYAN_CELERY_BROKER_URL: redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/0
MAYAN_CELERY_RESULT_BACKEND: redis://:${MAYAN_REDIS_PASSWORD:-mayanredispassword}@redis:6379/1
MAYAN_DATABASES: "{'default':{'ENGINE':'django.db.backends.postgresql','NAME':'${MAYAN_DATABASE_DB:-mayan}','PASSWORD':'${MAYAN_DATABASE_PASSWORD:-mayandbpass}','USER':'${MAYAN_DATABASE_USER:-mayan}','HOST':'postgresql'}}"
MAYAN_DOCKER_WAIT: "db:5432 redis:6379"
networks:
- bridge

background_tasks:
restart: always
container_name: process_tasks
build:
context: .
depends_on:
- app
- db
environment:
- DB_NAME=app
- DB_USER=insights
- DB_HOST=db
- DB_PORT=5432
volumes:
- ./app:/app
command: >
sh -c "python manage.py process_tasks --sleep=3 --log-std --traceback"

volumes:
postgres_data:
redis_data:
mayanedms_data:

谢谢您的帮助

最佳答案

您的docker-compose.yml中的YAML缩进是错误的。 YAML文件依靠空格缩进来定义结构,但是服务db的缩进使用3个空格,而app使用2个空格-解析文件时,Compose将db(3个空格)解释为app(2个空格)的子组件,就像您在做的那样:

services:
app:
...
db:
...

或json中的等效项:
"services": {
"app": {
"db": {
...
}
}
}

您需要的是:
services:
app:
...
db:
...

相当于json:
"services": {
"app": {
...
},
"db": {
...
}
}

所有其他服务定义以及 volumes都存在相同的问题。 volumes必须是顶层元素,但是如果有空格,它将被读取为 services的子组件

关于django - 我如何修复docker-compose.yml,在使用Django安装Mayan-EDMS时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61006020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com