1.docker基础配置
1.安装docker 和 docker-compose
apt-get install -y docker
apt install docker.io
apt install docker-compose
2.配置docker阿里云加速器(其他都慢,阿里云最快最稳定)
登录阿里云,搜镜像加速器,自行配置
2.docker化部署django+mysql
docker-compose 部署流程
1.新建docker-compose工程目录
mkdir 1.DockerDemo && cd 1.DockerDemo
(1)在 1.DockerDemo目录下创建3个目录
mkdir project config mysqldb
project 用于放置Django项目
config 用于放置配置文件:requirements.txt等
mysqldb 用于放置数据库文件
(后面创建的Dockerfile 和 docker-compose.yml放到项目1.DockerDemo下)
(2)编写requirements.txt
vi config/requirements.txt
Django
mysqlclient
2. 编写Dockerfile_django
vi Dockerfile_djnago
(其中的环境变量PYTHONUNBUFFERED表示动python文件的作用是直接把输出重定向到文件)
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /home/1.DockerDemo
ADD . /home/1.DockerDemo
WORKDIR /home/1.DockerDemo
RUN pip3 install -r ./config/requirements.txt -i https://pypi.douban.com/simple
3. 编写docker-compose.yml
vi docker-compose.yml
version: '2'
services:
db: # db为标签
image: mysql:5.7 # image表示使用 mysql镜像,使用5.7版本避免出现密码版本问题
container_name: mysql_01 # container_name表示 生成的容器名
ports: # 映射主机的33060端口到容器的3306,外部主机可以直接通过宿主机ip:33060 访问到 MySQL 的服务。
- "33060:3306"
volumes: # volumes表示将宿主机的路径挂载到容器的路径,注意./mysqldb是主机的数据库文件
- ./mysqldb:/var/lib/mysql
environment: # environment环境变量:对于mysql镜像以root登录需要提供密码MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE=mysql_django
- MYSQL_ROOT_PASSWORD=123456
web: # web标签
build: # 指定建立Dockerfile的路径和名称
context: .
dockerfile: Dockerfile_django
container_name: django_01 # 指定容器名django_01
command: python3 ./project/manage.py runserver 0.0.0.0:8000 # 覆盖容器启动的默认命令,这里启动Django
volumes: # 将宿主机当前路径挂载到容器的/home路径
- .:/home/1.DockerDemo
ports: # 将主机端口映射到容器端口
- "8000:8000"
depends_on: # 依赖于db服务启动
- db
4.建立django工程
注意本地已建好虚拟环境,在本地建立django项目,本地调测最后构建容器,工程名为 project
以下命令表示就以当前的project目录作为Django工程路径建立Django项目
在1.DockerDemo目录下执行:
django-admin startproject project ./project
修改Django工程的settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎使用mysql
'NAME': 'mysql_django', # 数据库名称
'USER': 'root', # 数据库登录用户名
'PASSWORD': '123456', # 数据库密码
'HOST': '填宿主机ip', # 数据库主机ip,注意mysql容器的3306端口映射到宿主机的33060端口,所以这里填宿主机ip
'PORT': 33060, # 数据库端口号,这里填宿主机上的端口33060,通过宿主机端口访问mysql容器端口
}
}
ALLOWED_HOSTS=['*']
5. 构建镜像 并 运行镜像
docker-compose build # 构建镜像
docker-compose up (直接看到容器运行结果)
或者 docker-compose up -d (让容器在后台运行)
在浏览器访问:(注意是宿主机ip)
http://宿主机ip:8000/