搭建之前的准备工作:
进入CMD执行docker pull 镜像名称:版本 拉取所需的镜像到本地
镜像准备完毕后,建立如下目录:
/code # 根目录
/code/docker # docker文件目录
/code/docker/django # 需要构建django镜像的文件目录
/code/docker/nginx # nginx虚拟域名配置目录
/code/static # 静态目录(可以配置vue或纯html的客户端目录)
/code/docker/django/Dockerfile
FROM python:3.5 # 来源镜像
ENV PYTHONUNBUFFERED 1
RUN mkdir /app # 创建目录
RUN mkdir /app/db
RUN mkdir /app/config
ADD ./requirements.txt /app/config/ # 添加本地文件到容器目录
RUN pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com -r /app/config/requirements.txt # pip安装框架及拓展
WORKDIR /app # 每次进入容器的工作目录
/code/docker/django/requirements.txt
Django
mysqlclient
/code/docker/nginx/django-index.conf
server {
listen 80;
server_name youhostname;
root "/usr/share/nginx/html/hall";
location / {
# try_files $uri $uri/ /index.html =404;
index index.html;
}
location = /50x.html {
root /usr/share/nginx/html;
}
}
/code/docker/nginx/django-admin.conf
server {
listen 80;
server_name youhostname;
root "/usr/share/nginx/html/admin";
client_max_body_size 5M;
keepalive_timeout 5;
location /public {
index index.html;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# enable this if and only if you use HTTPS
# proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
# we don't want nginx trying to do something clever with
# redirects, we set the Host: header above already.
proxy_redirect off;
proxy_pass http://django-demo:8890; # 转发到django处理请求
}
}
/code/docker/docker-compose.yml
version: '3' # docker-compose版本
services:
db: # 数据库
image: mysql:5.7 # 镜像和版本号
ports:
- "33060:3306" # 映射端口
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_USER: "root"
MYSQL_PASSWORD: "root"
MYSQL_DATABASE: "django"
python-dome: # docker-compose编排名称,一般同微服务名称,注意不要与其他服务重名
# image: "django:1.9.5" # docker镜像名及版本
build: ./django
container_name: django-demo # docker容器名
# restart: always
ports: # 映射端口
- "8890:8890"
volumes: # 挂载目录
- ../:/app
environment: # 配置环境变量
- TZ=Asia/Shanghai # 设置时区
command: bash -c "python /app/mysite/manage.py runserver 0.0.0.0:8890" # 设置启动命令
links:
- db
depends_on:
- db
nginx: # docker-compose编排名称,一般同微服务名称,注意不要与其他服务重名
# build: ./nginx
image: "nginx:alpine"
# restart: always
ports: # 映射端口
- "8891:80"
volumes: # 挂载目录
- ../static:/usr/share/nginx/html/static
- ../mysite:/usr/share/nginx/html/admin
- ./nginx:/etc/nginx/conf.d
environment: # 配置环境变量
- TZ=Asia/Shanghai # 设置时区
links:
- python-dome
depends_on:
- python-dome
在命令行进入/code/docker/django目录,执行 docker-compose build构建django镜像到本地,完成会返回success
docker_python-dome:latest就是镜像名称 构建完成后将自己的项目复制过来或创建新项目 新项目命令如下:
# 进入容器
docker run -it -v /code:/app docker_python-dome:latest /bin/bash
# 进入容器后执行
django-admin startproject mysite && python ./mysite/manage.py migrate
退出容器,进入/code/docker 执行 docker-compose up -d
打开CMD执行命令ipconfig
hosts文件中配置图中的ip地址与域名映射。浏览器访问即可。