【小白新手python项目使用docker】

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

1 下载和安装

下载安装docker
docker官方网站
windows版本

2 文件夹准备

准备需要上传到Linux系统,用于生成Docker镜像的文件夹

比如要上传的是文件夹curve,要包括

  • jx_curve项目文件 , 包含:
    • 项目内容 :包含工程的代码 (需要找到项目启动的主程序,本文为 main.py,的位置)
    • requirements :运行工程所需要的环境列表
  • Dockerfile

目录结构如下

curve/
├── jx_curve/          # 目录
│   ├── package/       # 子目录
│   └── requirements.txt
├── Dockerfile
└── other_file.txt     # 其他文件

在这里插入图片描述

生成 requirements:

项目文件夹jx_curve,就是整个项目

然后进入工程同级根目录jx_curve,执行

pip freeze > requirements.txt

然后项目文件的根目录就会得到一个 requirements文件

在这里插入图片描述

编写dockerfile

在这里插入图片描述

#基于的基础镜像
FROM python:3.7

# 设置code文件夹是工作目录
WORKDIR /code


# 先复制 requirements.txt 并安装依赖(优化 Docker 缓存)
COPY ./jx_curve/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制整个 jx_curve 目录(包括 package/) copy后目录结构见下 (把jx_curve文件下的所有东西copy到 当前工作目录下)
COPY ./jx_curve/ .

# 暴露端口
EXPOSE 8000

# 设置容器启动时运行的命令
# 直接运行 main.py(推荐)
CMD ["python", "./package/main.py"]
#等同于 CMD ["python", "/code/package/main.py"]


目录和点的区别

其中很多人喜欢 执行 ADD . .

code文件夹是工作目录时,执行 COPY ./jx_curve/ . 后,镜像的 /code 目录结构:

/code/
├── package/          # jx_curve/package/ 的内容直接放在 /code/ 下
│   ├── __init__.py
│   └── main.py
└── requirements.txt  # jx_curve/requirements.txt 直接放在 /code/ 下

code文件夹是工作目录时,执行 ADD . . 后的镜像目录结构(假设 WORKDIR/code

/code/                  # 镜像的工作目录
├── jx_curve/          # 原样复制
│   ├── package/
│   └── requirements.txt
├── Dockerfile         # 也被复制进去了(通常不需要)
└── other_file.txt     # 其他文件也会被复制

注意copy和add的区别

假设当前目录结构:

.
├── app.tar.gz
├── data.json
└── src/
    ├── main.py
    └── utils.py

使用 COPY . /code 的结果:

/code/
  ├── app.tar.gz   # 保持为压缩包文件
  ├── data.json
  └── src/
      ├── main.py
      └── utils.py

使用 ADD . /code 的结果:

/code/
  ├── app/         # 自动解压的app.tar.gz内容
  ├── data.json
  └── src/
      ├── main.py
      └── utils.py(E:\markDown\photo\image-20250415162106792.png)

3、文件夹 压缩成zip,上传到linux

可以使用finalshell进行上传

压缩:

​ 将 curve文件夹,压缩成zip包,上传到Linux虚拟机系统中的某个路径下面

解压:

执行命令:unzip curve.zip

进入curve文件夹

创建镜像:

​ 执行命令:docker build -t ef_nfcs_img .

​ ef_nfcs_img 为创建的镜像名称,. 表示当前目录(curve)

查看镜像是否创建成功:

​ 执行命令:docker images

​ 如果可以看到ef_nfcs_img的镜像,就已经存在了

4:运行镜像,生成并启动容器

执行命令:docker run -it -p 9060:9060 --name ef_nfcs ef_nfcs_img

-it:表示交互式终端的容器,非启动后立刻结束的容器

-p 9060:9060:表示将docker的9060端口,映射到Linux虚拟机的9060端口

(也就是说,访问Linux虚拟机的9060端口,就是在访问docker容器的9060端口)

–name ef_nfcs:给容器取个名字,嫌麻烦可以省去

ef_nfcs_img:容器是用哪个镜像启动的(一个容器,必须依赖一个镜像启动)

现在访问系统,只要将IP替换成虚拟机的IP:
在这里插入图片描述

5 一些实用命令

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值