<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>工程化 | 技术作品集</title><link>https://example.pages.dev/tags/%E5%B7%A5%E7%A8%8B%E5%8C%96/</link><atom:link href="https://example.pages.dev/tags/%E5%B7%A5%E7%A8%8B%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><description>工程化</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>zh-Hans</language><lastBuildDate>Tue, 15 Oct 2024 00:00:00 +0000</lastBuildDate><image><url>https://example.pages.dev/media/icon_hu_da05098ef60dc2e7.png</url><title>工程化</title><link>https://example.pages.dev/tags/%E5%B7%A5%E7%A8%8B%E5%8C%96/</link></image><item><title>Docker 部署实践：从开发环境到生产环境</title><link>https://example.pages.dev/blog/docker-deployment/</link><pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate><guid>https://example.pages.dev/blog/docker-deployment/</guid><description>&lt;p&gt;Docker 的价值不只是“把应用跑起来”，而是让开发、测试和生产环境尽量保持一致。只要项目涉及多人协作、依赖较多或部署频繁，容器化几乎都会带来明显收益。&lt;/p&gt;
&lt;h2 id="1-先保证镜像结构干净"&gt;1. 先保证镜像结构干净&lt;/h2&gt;
&lt;p&gt;基础镜像尽量精简，工作目录、依赖安装、源码复制和启动命令要保持清晰。开发阶段能跑不代表生产环境合适，真正上线时更应关注镜像体积、构建速度和安全边界。&lt;/p&gt;
&lt;h2 id="2-多阶段构建很值得做"&gt;2. 多阶段构建很值得做&lt;/h2&gt;
&lt;p&gt;把“构建产物”和“运行环境”拆开，通常可以显著缩小最终镜像体积。对于前端项目、Node 服务或 Go 服务，这都是很常见也很有效的优化手段。&lt;/p&gt;
&lt;h2 id="3-环境变量不要硬编码"&gt;3. 环境变量不要硬编码&lt;/h2&gt;
&lt;p&gt;数据库连接、第三方密钥、JWT 密钥这类配置都应该通过环境变量注入。把配置和镜像解耦之后，部署到不同环境会简单很多，也更安全。&lt;/p&gt;
&lt;h2 id="4-本地开发与生产部署最好分开考虑"&gt;4. 本地开发与生产部署最好分开考虑&lt;/h2&gt;
&lt;p&gt;本地可以使用 &lt;code&gt;docker compose&lt;/code&gt; 同时拉起应用、数据库和缓存，方便调试；生产环境则更关注启动顺序、健康检查、日志输出、资源限制和自动重启策略。&lt;/p&gt;
&lt;h2 id="5-真正的重点是可观测性"&gt;5. 真正的重点是可观测性&lt;/h2&gt;
&lt;p&gt;容器化之后，不代表问题会自动消失。日志、健康检查、错误告警、资源监控这些能力仍然要补齐，否则线上问题依旧很难排查。&lt;/p&gt;
&lt;h2 id="结语"&gt;结语&lt;/h2&gt;
&lt;p&gt;容器化最核心的收益，是把“环境差异”这个问题尽量收敛掉。只要同时兼顾镜像优化、配置管理和运行时观测，Docker 会是一套非常稳妥的交付基础设施。&lt;/p&gt;</description></item></channel></rss>