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

Docker实战:为项目打造即开即用的宝塔LNMP环境

Docker实战:为项目打造即开即用的宝塔LNMP环境

    • 背景
    • 一、准备基础镜像
    • 二、启动配置容器(关键步骤)
    • 三、容器内环境配置(逐步执行)
      • 1. 基础环境搭建
      • 2. 安装Systemd(宝塔依赖)
      • 3. 安装宝塔面板(自动化部署)
      • 4. 安装LNMP组件
      • 5. 清理空间
    • 四、生成定制镜像
    • 五、验证镜像可用性
    • 六、镜像管理技巧
      • 1. 版本迭代
      • 2. 镜像分发
      • 3. 推送到DockerHub
    • 七、避坑指南(常见问题解决)

背景

因为经常帮别人做一些项目,我习惯使用宝塔面板去配置一些比较简单的项目,这样比较方便我本地测试和快速的上线管理和维护, 但是也有麻烦的,就是经常需要为不同项目配置测试环境,然后在里面去安装应用,实在是麻烦。

今天分享一个实用技巧:将宝塔面板+LNMP环境封装成Docker镜像,实现10秒快速部署完整PHP/Python开发环境。下面是我的完整操作流程:


一、准备基础镜像

docker pull ubuntu:24.04  # 使用官方LTS版本

为什么选24.04?
LTS版本提供5年支持周期,避免频繁升级带来的兼容性问题。


二、启动配置容器(关键步骤)

docker run -it --name bt-builder \--net=host \                # 共享主机网络(简化端口映射)--hostname my-bt-server \   # 设置容器主机名--privileged=true \         # 授予特权(systemd必需)ubuntu:24.04 \bash                        # 进入交互模式

⚠️ 注意:这里使用 --privileged 是为后续systemd正常运行做准备,非特权容器会导致宝塔服务启动失败。


三、容器内环境配置(逐步执行)

1. 基础环境搭建

# 更新系统并安装工具链
apt update && apt upgrade -y
apt install -y locales ca-certificates curl wget git vim sudo bash net-tools iputils-ping# 配置UTF-8环境(解决中文乱码)
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8# 验证语言环境
locale

2. 安装Systemd(宝塔依赖)

apt install -y --reinstall systemd init  # Ubuntu24.04需显式安装

3. 安装宝塔面板(自动化部署)

# 官方一键安装脚本(截止目前最新版本为11.0.0)
if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

安装完成后按提示操作:

bt          # 启动控制台
1. 修改面板端口(避免冲突)
2. 修改登录账号
3. 修改登录密码(务必设置强密码!)

4. 安装LNMP组件

  1. 浏览器访问 http://主机IP:新端口
  2. 登录宝塔 → 应用商店 → 安装:
    • Nginx(建议最新稳定版)
    • MySQL(按项目需求)
    • PHP(多版本可选)
    • Python(为Python项目准备,安装路径如下图所示)

Python安装路径

5. 清理空间

apt clean && rm -rf /var/lib/apt/lists/*  # 释放约300MB空间
exit  # 退出容器

四、生成定制镜像

docker commit \--message "Ubuntu24.04 + 宝塔面板 + LNMP" \bt-builder \                  # 容器名ubuntu_bt_lnmp:1.0            # 镜像标签

✅ 最佳实践:用版本号标记镜像(如1.0),方便后续升级管理。


五、验证镜像可用性

# 启动生产容器(注意使用init系统)
docker run -d \--net=host \--name bt-production \--privileged=true \ubuntu_bt_lnmp:1.0 \/usr/sbin/init                # 关键!使systemd托管服务# 查看服务状态
docker exec bt-production bt status

此时宝塔面板应可通过 http://主机IP:端口 访问,Nginx/MySQL等服务自动运行。

服务自启动


六、镜像管理技巧

1. 版本迭代

# 每次更新后打新标签
docker commit bt-builder ubuntu_bt_lnmp:1.1
docker tag ubuntu_bt_lnmp:1.1 ubuntu_bt_lnmp:latest

2. 镜像分发

# 导出镜像
docker save -o ubuntu_bt_lnmp-v1.0.tar ubuntu_bt_lnmp:1.0# 导入镜像
docker load -i ubuntu_bt_lnmp-v1.0.tar

3. 推送到DockerHub

docker tag ubuntu_bt_lnmp:1.0 yourname/ubuntu-bt-lnmp:1.0
docker login
docker push yourname/ubuntu-bt-lnmp:1.0

Docker hub仓库


七、避坑指南(常见问题解决)

  1. 宝塔服务未自启?
    确保启动命令包含 /usr/sbin/init,这是systemd托管服务的关键

  2. 中文显示乱码?
    检查是否漏执行 locale-genupdate-locale

  3. 端口冲突问题
    建议在容器内修改宝塔默认端口:

    bt
    1  # 修改端口为例如 8888
    
  4. 安全提醒

    • 务必修改默认账号密码
    • 生产环境建议绑定独立数据卷:
      -v /your/mysql_data:/var/lib/mysql
      

通过这个标准化流程,你可以为不同项目定制专属环境镜像。下次部署新项目时,直接运行 docker run 就能获得开箱即用的开发环境啦!

http://www.lryc.cn/news/615922.html

相关文章:

  • redis集群-docker环境
  • 【从源码角度深度理解 CPython 的垃圾回收机制】:第2课循环引用:标记清除-分代回收
  • 机器学习线性归回实战(单因子和多音字分别建立预测房价模型)
  • 一个基于 Next.js 和 Puppeteer 的 Markdown 转图片服务,支持 Docker 部署和 API 集成
  • Node.js面试题及详细答案120题(01-15) -- 基础概念篇
  • python | numpy小记(十):理解 NumPy 中的 `np.random.multinomial`(进阶)
  • Stlink识别不到-安装驱动
  • 医防融合中心-智慧化慢病全程管理医疗AI系统开发(下)
  • 整数规划-分支定界
  • Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
  • AI编程插件对比分析:CodeRider、GitHub Copilot及其他
  • 给AI装上“翻译聚光灯”:注意力机制的机器翻译革命
  • 【精彩回顾·成都】成都 User Group×柴火创客空间:开源硬件驱动 AI 与云的创新实践!
  • 打卡day34
  • openpnp - 顶部相机如果超过6.5米影响通讯质量,可以加USB3.0信号放大器延长线
  • Spark执行计划与UI分析
  • AutoCAD 2026 的主要功能
  • 变量详解:创建初始化与内存管理
  • lesson34:深入理解Python线程:从基础到实战优化
  • XGBoost算法在机器学习中的实现
  • Android Camera 打开和拍照APK源码
  • Android 开发问题:Invalid id; ID definitions must be of the form @+id/ name
  • Android 16 KB页面大小适配的权威技术方案总结
  • Ubuntu 安装 Kibana
  • 神经机器翻译(NMT)框架:编码器-解码器(Encoder-Decoder)结构详解
  • 支持selenium的chrome driver更新到139.0.7258.66
  • 去除Edge微软浏览器与Chrome谷歌浏览器顶部出现“此版本的Windows不再支持升级Windows 10”的烦人提示
  • Elasticsearch QueryDSL 教程
  • Linux操作系统从入门到实战(十八)在Linux里面怎么查看进程
  • 三、k8s 1.29 之 安装1网络 / ikuai路由器虚拟机安装