如何在同一服务器运行两个不同的django-cookie-cutter Docker项目
1. 修改项目环境变量文件
针对每个项目,分别修改根目录下的.env(开发环境)或.env.prod(生产环境):
- 修改
DJANGO_PORT:第一个项目保留默认8000,第二个项目改为8001 - 修改
DOCKER_PORT:第一个项目设为8000:8000,第二个项目设为8001:8000 - 若使用PostgreSQL数据库:第一个项目
POSTGRES_PORT设为5432:5432,第二个项目改为5433:5432,同时同步修改.env里的POSTGRES_PORT变量值为5433 - 若启用Nginx反向代理:第一个项目
NGINX_PORT设为80:80,第二个项目改为8080:80
2. 调整Docker Compose配置
打开项目的docker-compose.yml(开发环境)或docker-compose.prod.yml(生产环境):
- 找到
web服务的ports字段,第一个项目保持"8000:8000",第二个项目改为"8001:8000"(容器内部端口无需修改,仅调整宿主机映射端口) - 若有
db服务,修改其ports字段:第一个项目"5432:5432",第二个项目改为"5433:5432" - 若有
nginx服务,修改其ports字段:第一个项目"80:80",第二个项目改为"8080:80"
3. 验证Nginx配置(若启用)
打开项目内的nginx/conf.d/app.conf(开发)或nginx/prod.conf(生产):
- 确认
listen指令为容器内部的80端口(无需修改) - 确认
proxy_pass指向web:8000(对应容器内的Django服务端口,无需修改) - 无需调整容器内Nginx的监听端口,仅通过Docker Compose映射不同宿主机端口即可避免冲突
4. 启动与验证
- 进入每个项目的根目录,分别执行启动命令:
- 开发环境:
docker-compose up -d - 生产环境:
docker-compose -f docker-compose.prod.yml up -d
- 开发环境:
- 执行
docker ps命令,查看所有容器的端口映射状态,确保没有端口冲突
内容的提问来源于stack exchange,提问作者Eric Acevedo
相关产品推荐
相关产品推荐

