kingmo888 / rustdesk-api-server

基于Django的RustDesk Api&Web Server,除了支持api所有功能,还支持web注册、管理、展示等。已支持到最新1.2.3版本。
490 stars 114 forks source link

Docker咱不懂,哪位朋友帮个忙升级下指令。 #47

Closed kingmo888 closed 4 months ago

kingmo888 commented 4 months ago

能否在docker中增加指令,

启动前执行如下两条: python manage.py makemigrations python manage.py migrate

作用: 当models有升级时,自动更新升级数据库。向前兼容。 @Cp0204

Cp0204 commented 4 months ago

可以直接写在 run.sh 里,Docker也是基于 run.sh 运行的。

kingmo888 commented 4 months ago

docker-compose.yaml 是基于run.sh吗?

Cp0204 commented 4 months ago

docker-compose.yaml 是基于run.sh吗?


Dockerfile 文件定义一个 Docker 容器基于什么系统环境(于是用户可以不用操心配置py环境和依赖的问题,直接都打包好了)、运行什么程序、怎么运行,其中最后一行: https://github.com/kingmo888/rustdesk-api-server/blob/0aec8b49ec6602ce8ebe79b2f6db8b25d357690d/Dockerfile#L17 表示容器入口点是运行 run.sh (也就是我说本docker应用基于run.sh运行的意思)

这个文件是开发者用的,把应用构建成 Docker 镜像就靠 Dockerfile 中的指令


docker-compose.yaml 文件是给用户参考的,它定义创建和运行一个容器指定用什么镜像、容器名、网络类型、用什么参数(映射文件路径、环境变量等),其作用相当于 Shell 中执行 docker run xxxxxxx 命令。

但 docker-compose 可以看作是 docker run 的超集,它可以定义的参数更多更清晰,还能把几个容器组合在一起运行(例如nginx+php+mysql)。

Cp0204 commented 4 months ago

再扩展一下,本例其实有两种解法:

  1. 固定在容器中执行 把这两个命令写在 run.sh 里,下次发版重新构建新镜像,用户升级到新镜像时,容器就会按期望的方式执行。

  2. 让用户调整运行参数 写在 docker-compose.yaml 里,docker-compose甚至能自定义入口点(会覆盖Dockerfile默认的)或运行参数。

对用户而言 1 是比较友好的,不用手动去改什么参数,升级就行。

kingmo888 commented 4 months ago

cool!