【问题标题】:Unable to do migrations using docker.yml file- django+postgres [duplicate]无法使用 docker.yml 文件进行迁移-django+postgres [重复]
【发布时间】:2021-12-09 22:27:45
【问题描述】:

当我尝试在 docker 上运行我的 django 项目时出现以下错误。

relation "DBTable" does not exist at character 218

我发现这是因为没有应用迁移。 所以我在启动服务器之前更改了我的 Dockerfile 以进行迁移:

FROM python:3.7
WORKDIR /ServerCode2/
COPY . /ServerCode2/
RUN pip install -r req.txt
EXPOSE 8000
CMD ["python", "manage.py", "makemigrations" ]
CMD ["python", "manage.py", "migrate" ]
CMD ["python", "manage.py", "runserver", "--noreload" ]

下面是我的 docker-compose.yml 文件

version: '3.7'
services:
  server:
    build:
      context: ./Appname
      dockerfile: Dockerfile
    image: serverimgtest1
    container_name: servercontest1
    ports:
      - 8000:8000
    links:
      - db:db
    depends_on:
      - db

  db:
    image: postgres
    environment:
        POSTGRES_DB: "DBname"
        POSTGRES_HOST_AUTH_METHOD: "trust"
    ports:
        - 5432:5432

  client:
    build:
      context: ./appfrontend
      dockerfile: Dockerfile
    image: clientimgtest1
    container_name: clientcontest1
    depends_on:
      - server
    ports:
      - 3000:3000

但是,我仍然看到表示关系不存在的错误。有什么方法可以通过 dockerFile 中的命令实现迁移?

【问题讨论】:

  • 一个容器只运行一个命令;如果 Dockerfile 有多个 CMD 最后一个获胜。您可以以 shell 形式使用 CMD command1 && command2,或使用入口点包装脚本,或手动 docker-compose run 迁移;链接的问题包含所有这些示例。

标签: django postgresql docker


【解决方案1】:

尝试运行:

docker-compose run server sh -c "python manage.py makemigrations"

然后

docker-compose run server sh -c "python manage.py migrate"

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 2021-06-28
    • 1970-01-01
    • 2018-01-25
    • 2021-06-27
    • 2021-10-13
    • 2020-07-02
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多