[docker]封装python的docker镜像

简介: [docker]封装python的docker镜像

前言

基于alpine的python镜像封装。

docker pull python:3.10-alpine

准备

  • requirements.txt内容:
fastapi
uvicorn
  • server.py内容
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "world"}
if __name__ == '__main__':
    uvicorn.run("server:app",host="0.0.0.0",port=8000)
  • Dockerfile内容
FROM python:3.10-alpine
LABEL author="heruos"
WORKDIR /app
ADD . /app
EXPOSE 8000
RUN python3 -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
CMD python3 /app/server.py

打包

build方式

# 使用主机网络,避免容器内访问不到外网的奇怪问题
docker build --network=host -t mypy:1.0 .

commit方式

docker run -it --rm --network=host python:3.10-alpine sh
python3 -m pip install fastapi uvicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
# docker cp将文件放到容器内
# 依据修改后的容器封装成新的镜像
docker commit -a "heruos" -m "install fastapi" 容器id myfastapi:1.0

compose方式

在docker-compose文件中添加封装配置,封装后直接启动。

  • docker-compose.yaml内容
version: "3"
services:
  fastapi:
    build:
      context: .
      dockerfile: Dockerfile
      # 使用主机网络
      network: host
    # 指定的镜像就是封装后的镜像文件名
    image: fastapi:1.0
    container_name: fa_app
    hostname: fa_app
    ports:
      - 8000:8000
  • 构建并启动
docker-compose up -d

测试

# 查看镜像和容器
docker images
docker ps -a
# curl测试
curl http://127.0.0.1:8000
相关文章
|
4月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
404 100
|
4月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
331 99
|
4月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
378 98
|
4月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
9月前
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
1827 32
|
3月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
558 5
|
4月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
221 8
|
5月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
338 16
|
6月前
|
Docker 容器 应用服务中间件
Docker 客户端是如何拉取镜像的?
Docker客户端拉取镜像的过程遵循Docker Registry HTTP API V2规范,主要分为解析镜像名、鉴权、获取Manifest、拉取Layers及本地合并五个步骤。它与Docker Hub、Harbor等仓库通信,确保镜像正确下载和构建。
979 59
|
5月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1012 1