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

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐