十二冶金建设集团有限公司网站揭阳网站建设方案外包

张小明 2026/1/9 18:43:29
十二冶金建设集团有限公司网站,揭阳网站建设方案外包,网站制作 商务,网站开发新功能程序员都遇到过上线部署项目的问题#xff0c;那么在python中怎么部署一个应用呢#xff1f;其实现在大家都用docker打包后进行部署。 为什么要用Docker#xff1f; 同事是个老程序员#xff0c;什么都喜欢手动#xff0c;后来部署python应用他就出现了这些问题#xff1…程序员都遇到过上线部署项目的问题那么在python中怎么部署一个应用呢其实现在大家都用docker打包后进行部署。为什么要用Docker同事是个老程序员什么都喜欢手动后来部署python应用他就出现了这些问题开发环境Python 3.9服务器是3.6某个语法不支持本地用SQLite线上用MySQL连接方式完全不一样依赖库版本对不上一个隐蔽的bug只在生产环境出现他折腾了几天。如果用Docker这些问题根本不会出现。第一步在打包之前先整理检查一下你的应用。以我的manyan项目为例manyan/ ├── app.py # 主程序 ├── requirements.txt # 依赖清单 ├── config/ # 配置文件 ├── logs/ # 日志目录 └── migrations/ # 数据库迁移关键检查点所有依赖都在requirements.txt里吗用pip freeze requirements.txt检查敏感信息密码、API密钥从代码里剥离了吗日志是写到文件还是标准输出容器里建议用标准输出第二步写Dockerfile配置文件就是告诉Docker怎么打包你的应用。这是我给manyan项目写的# 选择基础镜像Python 3.9的轻量版 FROM python:3.9-slim # 设置工作目录容器里的/app目录 WORKDIR /app # 先复制依赖文件这样能利用Docker的缓存层 COPY requirements.txt . # 安装依赖清华源加速 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 复制整个项目代码 COPY . . # 设置时区避免日志时间不对 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 创建一个非root用户运行应用安全考虑 RUN useradd -m -u 1000 appuser chown -R appuser:appuser /app USER appuser # 告诉Docker怎么启动应用 CMD [gunicorn, --bind, 0.0.0.0:8080, --workers, 3, app:app]关键点分阶段复制先复制requirements.txt这样改代码时不用重新安装依赖非root用户用root跑应用是大忌国内镜像源加速安装过程第三步打包前先本地测试# 1. 构建镜像最后的点表示当前目录docker build -t manyan:latest.# 2. 运行容器-d后台运行-p端口映射docker run -d --name manyan-test -p8000:8080 manyan:latest# 3. 测试访问curlhttp://localhost:8000/health# 4. 查看日志docker logs manyan-test# 5. 进入容器看看调试用dockerexec-it manyan-test /bin/bash如果一切正常你会看到应用在容器里欢快地跑着。第四步正确设置和读取配置文件。别把数据库密码写在代码里然后打包进镜像了…正确做法环境变量 配置文件挂载# app.py里这样读取配置importosfromdotenvimportload_dotenv load_dotenv()# 加载.env文件DATABASE_URLos.getenv(DATABASE_URL,sqlite:///local.db)DEBUGos.getenv(DEBUG,False).lower()true然后在运行容器时传入docker run -d\--name manyan\-p8000:8080\-eDATABASE_URLmysql://user:passdb:3306/manyan\-eDEBUGFalse\-v$(pwd)/config:/app/config\manyan:latest或者用.env文件# .env文件DATABASE_URLmysql://user:passdb:3306/manyanDEBUGFalseREDIS_URLredis://redis:6379/0# 运行docker run --env-file .env -p8000:8080 manyan:latest第五步多服务协作真实应用很少单打独斗。manyan需要PostgreSQL数据库和Redis缓存# docker-compose.ymlversion:3.8services:# 主应用manyan:build:.ports:-8000:8080environment:-DATABASE_URLpostgresql://manyan_user:passworddb:5432/manyan_db-REDIS_URLredis://redis:6379/0depends_on:-db-redisvolumes:-./logs:/app/logs# 日志持久化restart:unless-stopped# 自动重启# 数据库db:image:postgres:13environment:POSTGRES_USER:manyan_userPOSTGRES_PASSWORD:passwordPOSTGRES_DB:manyan_dbvolumes:-postgres_data:/var/lib/postgresql/data# Redisredis:image:redis:6-alpinecommand:redis-server--appendonly yesvolumes:-redis_data:/datavolumes:postgres_data:redis_data:启动整个栈docker-compose up -d一行命令三个服务全部启动网络自动配置好。第六步本地测试好了现在要上线。方案A简单直接适合小项目# 1. 把代码传到服务器scp-r manyan userserver:/app/# 2. 在服务器上构建和运行sshuserservercd/app/manyan docker-compose up -d方案B镜像仓库更正规# 1. 推送到Docker Hubdocker tag manyan:latest yourname/manyan:1.0 docker push yourname/manyan:1.0# 2. 服务器拉取并运行docker pull yourname/manyan:1.0 docker run -d --name manyan -p8000:8080 yourname/manyan:1.0方案C自动化部署GitHub Actionsname:自动部署on:[push]jobs:deploy:runs-on:ubuntu-lateststeps:-name:部署到服务器uses:appleboy/ssh-actionv0.1.4with:host:${{secrets.SERVER_HOST}}username:${{secrets.SERVER_USER}}key:${{secrets.SSH_KEY}}script:|cd /app/manyan git pull docker-compose down docker-compose build docker-compose up -d生产环境优化默认配置能用但生产环境需要更多考虑资源限制——防止一个容器吃光所有内存manyan:deploy:resources:limits:cpus:1memory:512Mreservations:memory:256M健康检查——让Docker知道应用是否健康HEALTHCHECK --interval30s --timeout3s --start-period5s --retries3 \ CMD curl -f http://localhost:8080/health || exit 1日志驱动——更好的日志管理docker run --log-driverjson-file --log-opt max-size10m --log-opt max-file3...常见坑和填坑指南坑1容器时区不对解决Dockerfile里设置时区或者运行容器时加-e TZAsia/Shanghai坑2应用写文件重启后没了解决用volumes挂载需要持久化的目录坑3性能比直接部署慢解决可能是虚拟化开销对于性能敏感应用考虑–networkhost模式坑4镜像太大传输慢解决用alpine基础镜像多阶段构建清理不必要的文件监控和维护上线只是开始应用跑起来后# 查看状态docker-composeps# 查看日志docker-compose logs -f manyan# 进入容器调试docker-composeexecmanyan /bin/bash# 更新应用docker-compose pull manyan docker-compose up -d# 备份数据docker-composeexecdb pg_dumpall -U postgresbackup.sql什么时候不该用DockerDocker不是万能的。如果你的应用对性能极端敏感高频交易系统需要特殊硬件访问GPU直通只是简单的脚本跑完就结束团队完全不懂容器技术那可能直接部署更合适。说点实在的我第一次用Docker部署时花了三天时间。现在从零部署一个Python应用到上线大概30分钟。关键不是技术多先进而是形成流程写代码 → 2. 写Dockerfile → 3. 本地测试 → 4. 推仓库 → 5. 服务器拉取运行这套流程熟了之后部署从玄学变成机械操作。再也不用说“我本地跑得好好的”了因为本地和线上环境一模一样。你的下一个Python项目试试用Docker打包。第一次可能有点磕绊但一旦跑通你就回不去了。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

买产品做企业网站还是博客利用软件做许多网站违法吗

Excalidraw 集成 Prometheus 实现生产级监控与实时告警 在如今的远程协作浪潮中,可视化工具早已不再是“锦上添花”的辅助手段,而是技术团队日常沟通、架构设计和敏捷开发的核心基础设施。Excalidraw 凭借其独特的手绘风格、简洁的交互体验以及完全开源的…

张小明 2026/1/9 15:59:33 网站建设

电商网站开发难点湖南定制响应式网站有哪些

引言 在 Spring Boot 3 项目中,当我们从 RestTemplate 迁移到 WebClient 时,连接池的管理和监控变得更加复杂。本文将详细介绍如何在使用 WebClient 时启用和监控连接池的各种指标,以确保应用程序的连接管理效率。 背景 在 RestTemplate 中,我们可以直接通过 PoolingHtt…

张小明 2026/1/7 16:18:11 网站建设

建设银行贵阳市网站电话网站建设 义乌

如何让AI工作流真正理解你的业务场景? 【免费下载链接】FastGPT labring/FastGPT: FastGPT 是一个基于PyTorch实现的快速版GPT(Generative Pretrained Transformer)模型,可能是为了优化训练速度或资源占用而设计的一个实验性项目&…

张小明 2025/12/30 16:20:42 网站建设

微信网站开发用什么语言网站建设 任务

文章目录前言一、什么是输出解析器二、为什么要用输出解析器三、常见的输出解析器有哪些?有什么作用?四、输出解析器的具体使用(代码)总结前言 提示:承上启下,系列文章,通过前言会议一下上篇章…

张小明 2025/12/28 7:02:36 网站建设

连云港做网站多少钱中国保密在线网站培训系统

如何让搜索结果“会说话”?Elasticsearch 高亮实战全解析你有没有过这样的体验:在某个网站搜了一堆内容,点进结果列表后还得手动翻找关键词?明明系统说“找到了 23 条匹配记录”,可每条都长得差不多,根本看…

张小明 2025/12/26 3:07:32 网站建设

推广学校网站怎么做做网站有了空间在备案吗

GPT-SoVITS语音合成精度提升秘诀:数据预处理要点 在AI语音技术飞速发展的今天,我们早已不再满足于机械朗读式的“机器人音”。无论是虚拟主播、有声书生成,还是为视障人士提供无障碍阅读服务,用户都希望听到更自然、更具个性的声音…

张小明 2025/12/26 3:06:57 网站建设