Pyd*_* UA 6 django production docker docker-compose
所以我使用 Python+Django(但对于这个问题并不重要)
当我编写代码时,我只需运行
./manage.py runserver
Run Code Online (Sandbox Code Playgroud)
它负责网络服务器、静态文件、自动重新加载等。
并且为了将其投入生产,我使用了一系列命令,例如
./manage.py collectstatic
./manage.py migrate
uwsgi --http 127.0.0.1:8000 -w wsgi --processes=4
Run Code Online (Sandbox Code Playgroud)
我还有一些其他服务,如 postgres、redis(生产和开发都很常见)
所以我试图在这里适应 docker(+ -compose) 但我无法理解如何用它拆分 prod/dev。
基本上在 docker-compose.yml你定义你的服务和图像 - 但在我的情况下,生产中的图像应该运行一个 CMD 而在开发中运行另一个..
实现这一目标的最佳做法是什么?
您应该创建额外的 docker-compose.yml 文件,如 docker-compose-dev.yml 或 docker-compose-pro.yml 并使用 -f 命令覆盖一些原始 docker-compose.yml 配置:
docker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d
有时,我也会针对不同的环境使用不同的 Dockerfile 并dockerfile在 docker-compose-pro.yml 构建部分中指定参数,但我不推荐这样做,因为您会以重复的 Dockerfile 结束。
更新
Docker 引入了多阶段构建功能https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds,它允许为不同的环境创建 Dockerfile。
| 归档时间: |
|
| 查看次数: |
3068 次 |
| 最近记录: |