如何从 dockerfile 管理文件
How to manage files from dockerfile
我在 docker 中有一个项目,我一直在努力从 dockerfile 或 docker-compose 文件生成一些文件。
我有一个 docker 化的 Django 项目,结构如下。
assets/
app/
db/
.gitignore (ignoring all files of the folder)
db.sqlite3
docker-compose.yml
Dockerfile
出于 post 的目的,我只是写了一个总体结构来了解项目的情况以及我想做什么。
我试图做的是将数据库文件挂载为一个卷(类型:绑定)但没有成功。我所做的是将文件夹 db 视为卷文件夹。到这里为止一切正常。
我想要做的是在不存在时生成 db.sqlite3 文件,运行 迁移和 运行 命令 python manage.py collectstatic - -无输入。
我尝试创建一个入口点文件:
#/bin/sh
python manage.py collectstatic --noinput
db=/code/db/db.sqlite3
if [ ! -f "$db" ]; then
touch "$db"
fi
python manage.py migrate
我尝试在 Dockerfile 中使用 ENTRYPOINT 和 CMD 语句调用此文件,其中 none 有效。我还尝试 运行 来自 Dockerfile 的命令 touch,结果是一样的。
如果您的容器有一个入口点,那么当该入口点退出时,容器就完成了,docker ps
将显示 "exited" 状态。如果它也有命令,则入口点需要负责 运行ning 它。最常见的方法是 运行 它作为入口点脚本的最后一行
#!/bin/sh
...
exec "$@"
您在问题中显示的入口点缺少此行,因此您的容器仅 运行 初始设置和迁移,但随后退出而不是实际启动服务器。
我在 docker 中有一个项目,我一直在努力从 dockerfile 或 docker-compose 文件生成一些文件。
我有一个 docker 化的 Django 项目,结构如下。
assets/
app/
db/
.gitignore (ignoring all files of the folder)
db.sqlite3
docker-compose.yml
Dockerfile
出于 post 的目的,我只是写了一个总体结构来了解项目的情况以及我想做什么。
我试图做的是将数据库文件挂载为一个卷(类型:绑定)但没有成功。我所做的是将文件夹 db 视为卷文件夹。到这里为止一切正常。
我想要做的是在不存在时生成 db.sqlite3 文件,运行 迁移和 运行 命令 python manage.py collectstatic - -无输入。
我尝试创建一个入口点文件:
#/bin/sh
python manage.py collectstatic --noinput
db=/code/db/db.sqlite3
if [ ! -f "$db" ]; then
touch "$db"
fi
python manage.py migrate
我尝试在 Dockerfile 中使用 ENTRYPOINT 和 CMD 语句调用此文件,其中 none 有效。我还尝试 运行 来自 Dockerfile 的命令 touch,结果是一样的。
如果您的容器有一个入口点,那么当该入口点退出时,容器就完成了,docker ps
将显示 "exited" 状态。如果它也有命令,则入口点需要负责 运行ning 它。最常见的方法是 运行 它作为入口点脚本的最后一行
#!/bin/sh
...
exec "$@"
您在问题中显示的入口点缺少此行,因此您的容器仅 运行 初始设置和迁移,但随后退出而不是实际启动服务器。