首页 > 解决方案 > 无法使用 docker.yml 文件进行迁移 - django+postgres

问题描述

当我尝试在 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 中的命令实现迁移?

标签: djangopostgresqldocker

解决方案


尝试运行:

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

然后

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


推荐阅读