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組件
- 瀏覽器訪問
http://主機IP:新端口
- 登錄寶塔 → 應用商店 → 安裝:
- Nginx(建議最新穩定版)
- MySQL(按項目需求)
- PHP(多版本可選)
- 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
七、避坑指南(常見問題解決)
-
寶塔服務未自啟?
確保啟動命令包含/usr/sbin/init
,這是systemd托管服務的關鍵 -
中文顯示亂碼?
檢查是否漏執行locale-gen
和update-locale
-
端口沖突問題
建議在容器內修改寶塔默認端口:bt 1 # 修改端口為例如 8888
-
安全提醒
- 務必修改默認賬號密碼
- 生產環境建議綁定獨立數據卷:
-v /your/mysql_data:/var/lib/mysql
通過這個標準化流程,你可以為不同項目定制專屬環境鏡像。下次部署新項目時,直接運行 docker run
就能獲得開箱即用的開發環境啦!