mkdir docker_compose
cd docker_compose
mkdir 01_django
mkdir 02_mysql
mkdir 03_redis
注意:使用之前制作的Django镜像(2.0)版本
进入到01_django文件夹
新建Dockerfile文件,如下:
FROM ubuntu:16.04
# 复制文件到容器
ADD requirements.txt /home
# 跳转到指定目录
WORKDIR /home
# 复制国内更新源
COPY sources.list /etc/apt/sources.list
# 安装vim、python3、pip3以及Django用的包
RUN apt-get update && apt-get install vim -y \
&& apt-get install python3 -y \
&& apt-get install python3-pip -y \
&& pip3 install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
# 创建项目(当在运行容器是,如果使用了-v且设置了/home/app,那么就可以直接运行指定的Django项目)
RUN django-admin startproject app
# 进入到项目目录
WORKDIR /home/app
# 对外暴露端口
EXPOSE 8000
# 运行测试项目
CMD ["python3","manage.py","runserver", "0.0.0.0:8000"]
新建requirements.txt
文件,内容如下:
aliyun-python-sdk-core-v3==2.13.10
certifi==2019.9.11
chardet==3.0.4
Django==2.0
django-redis==4.10.0
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10.3
jmespath==0.9.4
MarkupSafe==1.1.1
mock==3.0.5
Pillow==6.2.1
pycryptodomex==3.7.2
PyMySQL==0.9.3
python-alipay-sdk==1.10.1
pytz==2019.3
QQLoginTool==0.3.0
redis==3.3.11
requests==2.22.0
six==1.12.0
urllib3==1.25.7
sources.list
文件,内容如下:deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
mkdir project
5.新建django项目
在/01_project/project
的目录下执行
django-admin startproject app
跳转到docker_compose路径下
新建docker-compose.yml文件,内容如下:
version: '3'
services:
django:
build: ./01_django
volumes:
- ./01_django/project/app:/home/app
ports:
- "8000:8000"
效果如下:
注意: 如果以后需要运行某个服务时,运行特殊命令,可以通过添加如下代码实现
command: python3 manage.py runserver 0.0.0.0:8000
docker-compose build
构建成功
说明:
因为此时的docker-compose.yml文件中只有一个django的服务,所以只创建了这个镜像
使用docker-compose up
运行服务
这个时候访问http://127.0.0.1:8000就可以看到django的初始页面了。
version: '3'
services:
mysql:
image: mysql:5.7
expose:
- 3306
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: python
MYSQL_USER: root
volumes:
- ./02_mysql:/var/lib/mysql
docker-compose up
下载redis镜像,复制一份docker-compose.yml
为docker-compose.yml.bk2
,然后构建docker-compose.yml
,之后docker-compose.yml
文件为:
version: '3'
services:
redis:
image: redis
expose:
- 6379
ports:
- "6399:6379"
version: '3'
services:
redis:
image: redis
expose:
- 6379
ports:
- "6399:6379"
mysql:
image: mysql:5.7
expose:
- 3306
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: python
MYSQL_USER: root
volumes:
- ./02_mysql:/var/lib/mysql
django:
build: ./01_django
volumes:
- ./01_django/project:/home/app
ports:
- "8000:8000"
depends_on:
- mysql
- redis
注意:
depends_on表示依赖,如上述代码中意思是:需要运行django服务那么需要先运行redis、mysq服务,但并不能保证在django服务运行前它们已经成功的运行起来,只能保证它们先运行。
使用docker ps查看