1.win10专业版安装:https://www.runoob.com/docker/windows-docker-install.html
(这里需要注意的是只有系统是专业版时才可以使用该方法安装docker,如果系统是社区版或家庭版安装见:win10社区版安装)
2.准备一个最简单的django项目,如下图实现index地址的展示,在本机win10上使用python manage.py runserver已验证可正常运行
项目文件夹,除了下图红框的3个文件,其他文件是django项目下的常规文件,这个不用再多说
pip.conf 这是pip的配置文件,主要是替换下载源可选择阿里、清华、豆瓣等
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
requirements.txt 自己项目所需的依赖库
有两种生成方式
1.进入项目目录(包含manage.py文件的目录)打开终端输入 pip freeze > requirements.txt
在当前目录下会生成requirements.txt文件,但是此时生成的是整个虚拟环境需要的模块列表,可以看到依赖的文件有130个,而我们上面创建的项目其实并没有用到这么多的依赖文件,如果使用这个文件构建镜像,构建镜像的时间会非常长,不推荐这种方式。
2.仅生成本项目依赖的模块列表,使用 pipreqs,
也是跟方法1一样,在项目目录中执行以下命令
pip3 install pipreqs
pipreqs ./
可以看到这次生成的依赖文件中只有django,跟本项目实际依赖的模块一致。
如果执行pipreqs ./ 后报错,提示 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 262: illegal multibyte sequence
则执行命令:pipreqs ./ --encoding=utf-8
Dockerfile
创建一个文件,名为Dockerfile,注意该文件没有后缀,内容如下:
FROM python:3.6
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY pip.conf /root/.pip/pip.conf
COPY requirements.txt /usr/src/app/
RUN pip install -r /usr/src/app/requirements.txt
RUN rm -rf /usr/src/app
COPY . /usr/src/app
CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8080"]
解释:
1、以官方库python:3.6为基础进行制作,实际是一个装有python3.6的Linux
2、运行命令创建新文件夹 /usr/src/app
3、确定工作路径
4、将本地的pip.conf复制到pip的根中进行替换
5、将requirements.txt复制到指定目录下
6、运行命令按照requirements.txt的内容进行pip安装
7、运行命令删除这个文件夹中的所有内容,-rf是递归强制删除
8、将整个项目复制到这个文件夹中
9、执行命令运行Django项目的启动文件,并开放8080端口
3.制作镜像
进入项目目录,执行dockerfile文件,执行命令 docker build -t test .
test是镜像的名字,.表示当前文件夹,docker会自动寻找dockerfile文件并执行
如下图,系统会一步步的执行,如果失败了会回滚,如果这个过程中出现了超时的情况,大概率是没有更新镜像加速地址,docker镜像加速:https://www.runoob.com/docker/docker-mirror-acceleration.html
查看镜像文件,已经多了一个test镜像
4.运行容器
docker run --name djangotest -p 8080:8080 -d test
5.进入容器
docker exec -it djangotest /bin/bash
默认进入到/usr/src/app目录,即之前在dockerfile中指定的项目路径,ls查看项目文件都在该目录下
6.访问项目
使用本机ip或localhost或虚拟机的ip都可成功访问项目
访问地址:
http://127.0.0.1:8080/app/index/
http://192.168.79.225:8080/app/index/ (docker虚拟机ip)