1,项目介绍:
这是一个自动化测试的项目,使用python语言的flask框架,项目结构大致如下:
adautotest--
--app
--config
--logs
--models
--service
--views
--tests
manage.py
Dockerfile
requirements.txt
Dockerfile内容如下:
# For more information, please refer to https://aka.ms/vscode-docker-python
FROM python:3.8-slim
EXPOSE 8083
# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1
ENV FLASK_ENV=dev
# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1
# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
WORKDIR /root
COPY . /root
# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["python","manage.py","runserver"]
manage.py
manage.py运行的端口8083应该和Dockerfile中暴露的端口一致。
requirements.txt就是这个项目所有依赖
2,Dockerfile逻辑
编写的Dockerfile逻辑
FROM python:3.8-slim
是指使用什么python版本
EXPOSE 8083
是指暴露出来的端口
ENV FLASK_ENV=dev
是指定义的环境变量
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
把当前目录下的 requirements.txt 进行依赖安装
WORKDIR /root
COPY . /root
WORKDIR /root 相当于在容器中cd root(没有应该会新建)
COPY . /root 把当前宿主机中当前目录下的都拷贝到容器中的/root下去
CMD ["python","manage.py","runserver"]
运行命令 python manage.py runserver
3, docker打包镜像
把项目文件拷贝到docker机器上,进入项目目录
运行命令:
docker build -t image_name:版本 Dockfile_path
查看镜像
docker images
删除镜像
docker rmi 镜像名称:版本
或
docker rmi 镜像id
删除镜像前先删除镜像容器
docker ps -a
docker rm 容器id
4,docker启动容器
docker run -d -p 宿主机端口:容器端口 image_name:版本
-d是指后台运行
-p是指指定端口 (也可以使用默认端口-P)
docker ps查看所启动的容器
docker ps -a 查看所有启动的容器,包括暂停的容器
进入容器
docker exec -it 容器id /bin/bash
尝试访问有响应
注意有个大坑:
flask host设置为0.0.0.0要是设置为127.0.0.1的话,怎么都会访问不通,还会出现如下curl 错误
connection reset by peer