Djano + Nginx + docker配置与管理
在配置这个服务之前,应该对docker的基本安装与使用应该很熟悉了。下面开始直接不如正题
1.让我们创建一个名为myproject的空目录,并在src名称内添加另一个文件夹。src应该包含django项目。为了测试目的,让一个简单的django项目在名为mydjango的内部。
2.让我们在myproject中创建一个子目录并命名为config。让我们把一个requirement.pip
文件放到配置文件中,然后写下这些行:
Django==1.10 gunicorn==19.6.0 psycopg2==2.6.2
记住: 这里面包含的是你第一次创建时会下载的安装包,如果你少装了或者不清楚安装什么,也可以在你的doker服务起来之后进去安装,例如你的docker web服务的ID是123dsfsdf,你可以使用命令
1 2 | # docker exec -it 123dsfsdf /bin/sh # pip install *** |
3.现在,做一个Dockerfile
内部的myproject。这应该包含以下几行:
1 2 3 4 5 6 7 | FROM python: 3.5 ENV PYTHONUNBUFFERED 1 RUN mkdir / config ADD / config / requirements.pip / config / RUN pip install - r / config / requirements.pip RUN mkdir / src; WORKDIR / src |
如果你对dockerfile里面的命令有什么不熟悉的可以先去了解了解docker的基本命令。
4.然后开始创建一个名为docker-compose.yml
中的myproject目录,用于docker-compose up 启动时执行的脚本路径。
该docker-compose.yml
文件描述了制作您的应用的服务。在这里,我们需要一个Web服务(Django + Gunicorn),一个数据库(Postgres)和代理服务器(Nginx)。它还描述了这些服务将使用哪些Docker映像,它们将如何链接在一起,以及它们可能需要装入容器内的任何卷。最后,该docker-compose.yml
文件描述了这些服务公开哪些端口。有关此文件如何工作的更多信息,不要忘了 通过运行将docker-compose 添加,具体如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | version: '2' services: nginx: image: nginx:latest container_name: ng01 ports: - "8000:8000" volumes: - . / src: / src - . / config / nginx: / etc / nginx / conf.d depends_on: - web web: build: . container_name: dg01 command: bash - c "python manage.py makemigrations && python manage.py migrate && gunicorn mydjango.wsgi -b 0.0.0.0:8000" depends_on: - db volumes: - . / src: / src expose: - "8000" db: image: postgres:latest container_name: ps01 |
注意:image 所使用的都是你本地已经存在的镜像,如果不存在会去网上自行下载,不过这样会很耽误时间。
这样一切结束后,你会发现在你的服务器上启动了三个服务dj01, ps01, ng01。
如果此时你还不是很明白项目的个文件存档路径的话,这里列出自己的作为参考
1 2 3 4 5 6 7 8 9 10 | ── myproject ├── src │ ├── mydjango │ ├── manage.py ├── config │ ├── requirements.pip │ ├── nginx │ ├── mydjango.conf ├── Dockerfile └── docker - compose.yml |
当让。此时你的web还是不能访问你的外网环境的,需要你在nginx下自行配置
6.现在让我们写一个名为myproject的config文件夹内的nginx 配置文件,并将其放在一个名为nginx的子目录中。mydjango.conf
1 2 3 4 5 6 7 8 9 10 11 12 | upstream web { server web: 8000 ; } # portal server { location / { proxy_pass http: / / web / ; } listen 80 ; server_name localhost; } |
这样恭喜你完成了整个服务的部署
最后提供几个命令用于查看docker
用于shell访问
1 2 3 4 5 6 7 8 | #Nginx docker exec - ti nginx bash #Web docker exec - ti web bash #Database docker exec - ti db bash |
用于日志
1 2 3 4 5 6 | #Nginx docker - compose logs nginx #Web docker - compose logs web #DB docker - compose logs db |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?