Python新手求教:如何将Django项目Docker镜像部署到另一台Ubuntu系统
嘿,作为同样刚接触Docker时踩过不少坑的Python开发者,我来帮你搞定这个部署问题!你已经成功把镜像传到目标Ubuntu机器了,现在只差最后一步——创建并运行容器,咱们一步步来:
1. 确认你的镜像信息
先再确认下镜像的名称和标签,运行:
sudo docker images
你应该能看到dockerdemo4_web这个镜像,记好它的REPOSITORY(就是dockerdemo4_web)和TAG(通常是latest,如果没指定的话)。
2. 运行Docker容器
这是最关键的一步,我们需要用docker run命令把镜像变成运行中的容器。针对Django项目,基本命令如下:
sudo docker run -d -p 8000:8000 --name my_django_container dockerdemo4_web
我来拆解一下这些参数:
-d:让容器在后台(守护进程模式)运行,不会占用你的终端-p 8000:8000:把主机的8000端口映射到容器的8000端口(Django默认用8000端口,如果你项目里改了端口,要对应调整)--name my_django_container:给容器起个好记的名字,方便后面管理dockerdemo4_web:你要运行的镜像名称
额外配置(如果你的项目需要)
如果你的Django项目依赖环境变量(比如数据库连接字符串、SECRET_KEY等),可以用-e参数添加:
sudo docker run -d -p 8000:8000 \ -e SECRET_KEY="your-secret-key-here" \ -e DATABASE_URL="postgres://user:password@db-host:5432/db-name" \ --name my_django_container dockerdemo4_web
如果需要挂载本地的静态文件/媒体文件目录(比如方便更新静态资源),可以用-v参数:
sudo docker run -d -p 8000:8000 \ -v /home/charles/django-static:/app/static \ --name my_django_container dockerdemo4_web
3. 检查容器状态
运行完上面的命令后,用这个命令查看正在运行的容器:
sudo docker ps
如果看到你的my_django_container出现在列表里,说明成功启动了!如果没看到,运行sudo docker ps -a查看所有容器(包括停止的),然后用日志命令排查问题:
sudo docker logs my_django_container
常见的问题可能是:镜像里没有配置正确的启动命令(比如没指定CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]),或者环境变量缺失导致Django启动失败。
4. 测试访问
现在你可以在浏览器里访问http://目标Ubuntu机器的IP:8000,如果能看到Django的默认页面或者你的项目页面,就说明部署成功啦!
小提示(优化体验)
为了避免每次输docker命令都加sudo,可以把你的用户加入docker组:
sudo usermod -aG docker $USER
然后重新登录终端就生效了。
另外,生产环境不建议用Django自带的runserver,可以后续换成Gunicorn+Nginx的组合,但先让项目跑起来再说~
内容的提问来源于stack exchange,提问作者Charles Michel

