当前位置: 首页 > news >正文

docker容器内部署flask

部署docker :

第一步:下载docker服务

sudo apt-get update && sudo apt-get install -y curl gnupg && curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && sudo apt-get update && sudo apt-get install -y docker-ce

查看docker版本:

docker --version

配置dokcer国内镜像源

# 1. 配置国内镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<
EOF
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn"
]
}
EOF

# 2. 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker

# 3. 验证镜像源
docker info | grep -A 5 "Registry Mirrors"

# 4. 测试拉取镜像
docker run hello-world

重启docker服务

systemctl daemon-reload

systemctl restart docker.service

以下是在 Ubuntu 系统上完整操作的代码化、命令化流程,从零开始构建一个 Flask Web 服务的 Docker 镜像并运行。
所有步骤均为 可复制粘贴的终端命令,适合在 Ubuntu 20.04/22.04 等系统上执行。


✅ 目标

在 Ubuntu 上:

  1. 创建 Flask 项目
  2. 编写 Dockerfile
  3. 构建镜像
  4. 运行容器
  5. 测试服务

最终访问 http://localhost:3000 能看到:<h1>Hello from Docker!</h1>


🧰 前提条件

确保已安装:

  • Docker
  • Python3 和 pip(用于本地测试,非必须)

🔧 安装 Docker(如果未安装)

# 更新包索引
sudo apt update# 安装必要依赖
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 更新包索引
sudo apt update# 安装 Docker 引擎
sudo apt install -y docker-ce docker-ce-cli containerd.io# 将当前用户加入 docker 组(避免每次用 sudo)
sudo usermod -aG docker $USER# 提示用户重新登录或重启 shell
echo "✅ Docker 安装完成!请退出并重新登录,或运行: newgrp docker"

⚠️ 执行完 usermod 后,请退出终端并重新登录,否则后续命令可能需要加 sudo


📁 步骤 1:创建项目目录并进入

mkdir myweb && cd myweb

📄 步骤 2:创建 app.py

cat > app.py << 'EOF'
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return '<h1>Hello from Docker!</h1>'if __name__ == '__main__':app.run(host='0.0.0.0', port=3000)
EOF

📄 步骤 3:创建 requirements.txt

cat > requirements.txt << 'EOF'
Flask==3.0.3
EOF

📄 步骤 4:创建 Dockerfile

cat > Dockerfile << 'EOF'
# 第一阶段:构建并安装依赖
FROM python:3.11-alpine AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt# 第二阶段:运行环境
FROM python:3.11-alpine
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY app.py ./
ENV PATH=/root/.local/bin:$PATH
EXPOSE 3000
CMD ["python", "app.py"]
EOF

🐳 步骤 5:构建 Docker 镜像

docker build -t myweb:v1 .

✅ 预期输出:成功构建镜像,最后显示 Successfully tagged myweb:v1


▶️ 步骤 6:运行容器

docker run -d -p 3000:3000 --name myweb myweb:v1

✅ 预期输出:一串容器 ID(如 a1b2c3d4e5f6


🔍 步骤 7:测试服务

方法 1:使用 curl 测试

curl http://localhost:3000

✅ 预期输出:

<h1>Hello from Docker!</h1>

方法 2:浏览器访问

打开浏览器,访问:

http://localhost:3000

你应该能看到:Hello from Docker!


🔧 步骤 8:(可选)查看日志

docker logs myweb

🛑 步骤 9:(可选)停止并清理

# 停止容器
docker stop myweb# 删除容器
docker rm myweb# 删除镜像
docker rmi myweb:v1

🎯 总结:一键复制执行清单

# 1. 创建项目
mkdir myweb && cd myweb# 2. 创建 app.py
cat > app.py << 'EOF'
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return '<h1>Hello from Docker!</h1>'if __name__ == '__main__':app.run(host='0.0.0.0', port=3000)
EOF# 3. 创建 requirements.txt
echo "Flask==3.0.3" > requirements.txt# 4. 创建 Dockerfile
cat > Dockerfile << 'EOF'
FROM python:3.11-alpine AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txtFROM python:3.11-alpine
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY app.py ./
ENV PATH=/root/.local/bin:$PATH
EXPOSE 3000
CMD ["python", "app.py"]
EOF# 5. 构建镜像
docker build -t myweb:v1 .# 6. 运行容器
docker run -d -p 3000:3000 --name myweb myweb:v1# 7. 测试
curl http://localhost:3000

✅ 成功标志

当你看到:

<h1>Hello from Docker!</h1>

恭喜你!你已经成功在 Ubuntu 上:

  • 从零搭建了一个 Web 服务
  • 使用 Docker 容器化打包
  • 构建并运行了镜像

这是现代云原生开发的核心技能,继续加油!🚀

http://www.dtcms.com/a/533132.html

相关文章:

  • 手机玩win游戏:Termux安装box86+wine运行windows游戏,仙剑四测试完美通过!
  • 网站首页改版影响优化网站开发 京东
  • 西安米德建站平面设计网站建设
  • 北京专业网站建设公司哪家好手表哪个网站做的好
  • Vue3 Props
  • 数字信号处理——傅里叶变换
  • C++中使用gRPC over Unix Domain Sockets的高性能进程间通信技术解析
  • 量价分析模型
  • 网建网站昆明长尾词seo怎么优化
  • 【攻防实战】Redis未授权RCE联动metasploit打穿三层内网(下)
  • 有什网站可以做设计赚钱linux下搭建wordpress
  • 长沙企业网站建设哪家好班级网页模板html源码
  • 丹阳网站建设案例上海app定制公司
  • 【Linux】安装 Rocky Linux 9 并配置 Kubernetes 集群基础环境 | VMware | Win11
  • 外贸网站制作价格表家居类企业响应式网站
  • 网站制作评价指标上海网站建设找哪家公司
  • 传媒公司php网站源码女做受网站
  • 上海贸易公司注册条件优化设计五年级上册数学答案
  • 高电压技术:介电常数
  • 诚讯通网站品牌设计策划公司
  • 深入浅出 JavaScript 异步编程:从回调地狱到 Async/Await
  • php个人网站模板国外免费注册域名的网站
  • git clone 提示Filename too long
  • 做网站卖产品怎么开展网页设计培训南京
  • GitHub等平台形成的开源文化正在重塑开通了
  • 做网站找浩森宇特wordpress博客源码下载
  • app 网站建设seo包年推广
  • h5游戏免费下载:动态视力
  • Unity3D Shader 属性详解
  • 做招聘的h5用哪个网站宁德网站开发