【发布时间】: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