前言

基于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

[docker]封装python的docker镜像的更多相关文章

  1. docker:python与docker

    一:环境准备 pycharm:专业版(windows) docker ce 免费版(ubantu16.04) os: os:防火墙 二:开发流程 pycharm中开发环境搭建的工作原理: 1. pyc ...

  2. 还在用Alpine作为你Docker的Python开发基础镜像?其实Ubuntu更好一点

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_173 一般情况下,当你想为你的Python开发环境选择一个基础镜像时,大多数人都会选择Alpine,为什么?因为它太小了,仅仅只有 ...

  3. Docker 封装java镜像

    一.概述 目前java采用的框架是Spring,服务器直接通过 java -jar xxx.jar 就可以启动服务了. 二.jdk镜像 在docker中跑java应用,需要有jdk环境支持才行. 获取 ...

  4. 用Docker封装一个web应用(Django)

    一.复用以前一个封装了SSH的镜像,如果没有封装SSH,可以使用自己的镜像或参考我以前博文:叫板OpenStack:用Docker实现私有云 的前五步 接下来便是正题. 二.部署过程 1.查看镜像 R ...

  5. 笔记14:Docker 部署Python项目

    Docker 部署Python项目 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取 ...

  6. Docker教程:使用docker配置python开发环境

    http://blog.csdn.net/pipisorry/article/details/50808034 Docker的安装和配置 [Docker教程:docker的安装] [Docker教程: ...

  7. CentOS7 Docker私有仓库搭建及删除镜像 【转】

    文章来源:centos7 Docker私有仓库搭建及删除镜像 如果不想用私有镜像库,你可以用docker的库 https://hub.docker.com 环境准备 环境:两个装有Docker 17. ...

  8. Docker详细介绍安装与镜像制作和拉取

    一.Docker是什么? 产生背景: 开发和运维之间因为环境不同和导致的矛盾(不同的操作系统.软件环境.应用配置等)DevOps 代码.系统.环境.配置等封装成镜像Image--->运维: 集群 ...

  9. Docker概念学习系列之Docker核心概念之镜像Image

    不多说,直接上干货! 说明:   Docker 运行容器之前需要本地存在对应的镜像,如果镜像不存在,Docker 会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户 ...

  10. Docker学习笔记(2)-docker镜像操作

    本节将会涉及Docker的镜像操作. 1. 获取镜像 如何获取Docker Hub上的镜像?可通过docker pull命令获取,其格式为: docker pull [选项] [Docker Regi ...

随机推荐

  1. SqliLabs 第二关 ,数字型注入!!!

    首先打开网页,进行注入点的测试 输入?id=1 and 1=1发现1=2的时候出现了报错,说明服务器接收了我们的指令,并且进行了反馈,说明了有注入点的存在,然后对注入点进行测试 然后输入order b ...

  2. stl-----map去重,排序,计数

    一.map erase()删除函数:可以迭代器删除,关键字删除,成片删除. 例:1.iter=mapStu.find(1); mapStu.erase(iter); 2.int n = mapStu. ...

  3. 2023-04-08:社交网络中的最优邀请策略探究。本文以小红准备开宴会为例,提出一种基于贪心算法和二分查找的解决方案,帮助读者在保证愉悦值不低于k的前提下,最小化宴会的阶层差距。

    2023-04-08:小红有n个朋友, 她准备开个宴会,邀请一些朋友, i号朋友的愉悦值为a[i],财富值为b[i], 如果两个朋友同时参加宴会,这两个朋友之间的隔阂是其财富值差值的绝对值, 宴会的隔 ...

  4. 2022-11-20:小团生日收到妈妈送的两个一模一样的数列作为礼物! 他很开心的把玩,不过不小心没拿稳将数列摔坏了! 现在他手上的两个数列分别为A和B,长度分别为n和m。 小团很想再次让这两个数列变

    2022-11-20:小团生日收到妈妈送的两个一模一样的数列作为礼物! 他很开心的把玩,不过不小心没拿稳将数列摔坏了! 现在他手上的两个数列分别为A和B,长度分别为n和m. 小团很想再次让这两个数列变 ...

  5. 2022-06-16:给定一个数组arr,含有n个数字,都是非负数, 给定一个正数k, 返回所有子序列中,累加和最小的前k个子序列累加和。 假设K不大,怎么算最快? 来自亚马逊。

    2022-06-16:给定一个数组arr,含有n个数字,都是非负数, 给定一个正数k, 返回所有子序列中,累加和最小的前k个子序列累加和. 假设K不大,怎么算最快? 来自亚马逊. 答案2022-06- ...

  6. 解决 VMware EXSI的Windows虚拟机中,配置静态IP后,DHCP自动默认开启获取IP,导致无法访问

    解决 VMware EXSI的Windows虚拟机中,配置静态IP后,DHCP自动默认开启获取IP,导致无法访问 前言:在EXSI上部署了Windows虚拟机,但是配置了静态IP后却不能Ping通:逐 ...

  7. 2023-05-15:对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次, 能够使结果字符串等于 s2 ,则认为字符串 s1 和 s2 的 相似度为 k。 给你两个字母异位词 s1

    2023-05-15:对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次, 能够使结果字符串等于 s2 ,则认为字符串 s1 和 s2 的 相似度为 k. 给你两个字母异位词 s1 ...

  8. Django4全栈进阶之路14 项目实战(用户管理):base.html基础模板设计

    在 Django 中,我们可以使用模板继承来避免代码的重复.模板继承是指我们可以在一个模板中定义一些公共的 HTML 代码,然后在其他模板中继承这个基础模板,并根据需要添加或覆盖一些内容. 通常情况下 ...

  9. Django4全栈进阶之路7 makemigrations和migrate迁移

    Django 4 中使用数据迁移(migration)来管理数据库结构的变化.数据迁移可以创建.修改和删除数据库表.字段.索引等对象,以及填充初始数据. 下面是使用数据迁移的基本步骤: 1.在 app ...

  10. Django context must be a dict rather than UserProfile.

    context must be a dict rather than UserProfile. # 主页@login_requireddef index(request): data={} data ...