首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复我的docker-compose.yml,在用django安装Mayan时出错

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

Stack Overflow用户
提问于 2020-04-03 06:12:04
回答 1查看 578关注 0票数 4

我正在尝试安装玛雅-EDMS映像与Django应用程序和Postgres数据库使用坞-撰写,但每次,我尝试构建对接-撰写使用docker-compose up,它会出现一个错误。

代码语言:javascript
复制
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码头-构图包含:11.4-高寒,红色:5.0-高寒和蛋黄/蛋黄:3

代码语言:javascript
复制
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:

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-03 06:48:01

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

代码语言:javascript
复制
services:
  app:
    ...
    db:
      ...

或相当于json:

代码语言:javascript
复制
"services": {
  "app": {
    "db": { 
      ...
    }
  }
}

你需要的是:

代码语言:javascript
复制
services:
  app:
    ...
  db:
    ...

相当于json:

代码语言:javascript
复制
"services": {
  "app": {
   ...
  },
  "db": { 
    ...
  }
}

对于所有其他服务定义和volumes,都存在相同的问题。volumes必须是顶级元素,但使用空格读取的是services的子组件。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61006020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档