设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 手机 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

如何Docker化Python Django应用程序(2)

发布时间:2018-09-14 22:29 所属栏目:117 来源:Muhammad Arul
导读:创建一个新目录 guide01 ,并进入目录。 mkdir -p guide01 cd guide01/ 现在在 guide01 目录下,创建两个新目录 project 和 config 。 mkdir project/ config/ 注意: project 目录:我们所有的 python Django 项目

创建一个新目录 guide01,并进入目录。

  1. mkdir -p guide01
  2. cd guide01/

现在在 guide01 目录下,创建两个新目录 projectconfig

  1. mkdir project/ config/

注意:

  • project 目录:我们所有的 python Django 项目文件都将放在该目录中。
  • config 目录:项目配置文件的目录,包括 nginx 配置文件、python pip 的requirements.txt 文件等。

创建一个新的 requirements.txt 文件

接下来,使用 vim 命令在 config 目录中创建一个新的 requirements.txt 文件。

  1. vim config/requirements.txt

粘贴下面的配置:

  1. Django==2.0.4 
  2. gunicorn==19.7.0 
  3. psycopg2==2.7.4

保存并退出。

创建 Nginx 虚拟主机文件 django.conf

config 目录下创建 nginx 配置目录并添加虚拟主机配置文件 django.conf

  1. mkdir -p config/nginx/
  2. vim config/nginx/django.conf

粘贴下面的配置:

  1. upstream web {
  2. ip_hash;
  3. server web:8000;
  4. }
  5. # portal
  6. server {
  7. location / {
  8. proxy_pass http://web/;
  9. }
  10. listen 8000;
  11. server_name localhost;
  12. location /static {
  13. autoindex on;
  14. alias /src/static/;
  15. }
  16. }

保存并退出。

创建 Dockerfile

guide01 目录下创建新文件 Dockerfile

运行以下命令:

  1. vim Dockerfile

现在粘贴下面的 Dockerfile 脚本:

  1. FROM python:3.5-alpine
  2. ENV PYTHONUNBUFFERED 1 
  3.  
  4. RUN apk update && \
  5.    apk add --virtual build-deps gcc python-dev musl-dev && \
  6.    apk add postgresql-dev bash
  7.  
  8. RUN mkdir /config 
  9. ADD /config/requirements.txt /config/ 
  10. RUN pip install -r /config/requirements.txt
  11. RUN mkdir /src
  12. WORKDIR /src

保存并退出。

注意:

我们想要为我们的 Django 项目构建基于 Alpine Linux 的 Docker 镜像,Alpine 是最小的 Linux 版本。我们的 Django 项目将运行在带有 Python 3.5 的 Alpine Linux 上,并添加 postgresql-dev 包以支持 PostgreSQL 数据库。然后,我们将使用 python pip 命令安装在 requirements.txt 上列出的所有 Python 包,并为我们的项目创建新目录 /src

创建 Docker-compose 脚本

使用 vim 命令在 guide01 目录下创建 docker-compose.yml 文件。

  1. vim docker-compose.yml

粘贴以下配置内容:

  1. version: '3'
  2. services:
  3.   db:
  4.      image: postgres:10.3-alpine
  5.     container_name: postgres01
  6.   nginx:
  7.     image: nginx:1.13-alpine
  8.     container_name: nginx01
  9.     ports:
  10.       - "8000:8000"
  11.     volumes:
  12.       - ./project:/src
  13.       - ./config/nginx:/etc/nginx/conf.d
  14.     depends_on:
  15.       - web
  16.   web:
  17.     build: .
  18.     container_name: django01
  19.     command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn hello_django.wsgi -b 0.0.0.0:8000"
  20.     depends_on:
  21.       - db
  22.     volumes:
  23.       - ./project:/src
  24.     expose:
  25.       - "8000"
  26.     restart: always

保存并退出。

注意:

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读