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.pswp.cn/pingmian/92930.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92930.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92930.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

.net\c#web、小程序、安卓開發之基于asp.net家用汽車銷售管理系統的設計與實現

.net\c#web、小程序、安卓開發之基于asp.net家用汽車銷售管理系統的設計與實現

藥房智能盤庫系統:基于CV與時間序列預測的庫存革命

> 在醫療資源日益緊張的今天,**全國78%的藥房仍依賴人工盤庫**,平均每100家藥房每年因庫存問題損失超50萬元。當計算機視覺遇見時間序列預測,一場藥房庫存管理的智能化革命正在悄然發生。 --- ### 一、傳統藥房庫存的三大痛點與破局思路 #### 致命痛點分析 1. **人工…

【互動屏幕】解析雙屏聯動在數字展廳中的應用與價值

雙屏聯動 https://www.bmcyzs.com/ 作為現代展廳設計中的重要技術手段,通過兩塊或多塊屏幕的協同工作,實現了信息的動態展示與交互體驗的提升。在展廳環境中,雙屏聯動軟件能夠將觸摸屏與大屏幕無縫連接,使觀眾通過簡單的操作即可控…

clickhouse基礎概念及集群部署

一. 簡述: ClickHouse 是一款高性能列式存儲數據庫,專為海量數據的實時分析場景設計。它以極致的查詢速度、高效的存儲利用率和強大的并行處理能力著稱,廣泛應用于日志分析、用戶行為分析、業務監控等大數據分析領域。1. 核心特性&#xff1a…

低版本 IntelliJ IDEA 使用高版本 JDK 語言特性的問題

現實問題: 目前最新的 IntelliJ IDEA 已經不支持在 Win7 環境上安裝了,如果企業內開發環境仍然是 Win7,就會導致很多問題。 比如當前 IDEA 版本為 2023.1,最大支持 JDK17,如何正常使用 JDK21 的新特性呢?比…

3分鐘 Spring AI 實現對話功能

1.什么是spring AISpring AI 是 Spring 官方推出的一個基于 Spring 生態的 AI 應用開發框架,旨在簡化將人工智能(如大語言模型、生成式 AI)集成到 Java 應用中的過程。它提供了統一的 API 和工具,讓開發者能更輕松地調用 AI 模型2…

CMake筆記:配置(Configure)、生成(Generate)和構建(Build)

以下為AI生成的內容&#xff1a; 一、配置階段&#xff08;Configure&#xff09; 本質&#xff1a;解析項目邏輯&#xff0c;構建內存模型 觸發命令&#xff1a;cmake -S <源碼路徑> -B <構建路徑> 關鍵操作與輸出&#xff1a;操作類型典型案例輸出產物變量定義se…

直接編輯pdf文件教程

工具下載地址&#xff1a;https://pan.quark.cn/s/4befbe5f4a77 一、下載并安裝軟件二、打開軟件&#xff0c;并打開一個pdf文件三、編輯PDF文件&#xff0c;并保存四、關閉軟件&#xff0c;打開源文件查看效果。

javaswing json格式化工具

效果展示代碼 package com.example.springbootdemo;import javax.swing.*; import javax.swing.border.TitledBorder; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeSelectionModel; import java.…

真實案例 | 如何用iFlyCode開發Webpack插件?

01案例背景在項目中&#xff0c;我們經常需要存檔前端每次打包的版本&#xff0c;方便線上快速切換不同版本使用。經過思考&#xff0c;我們可以在打包時&#xff0c;將本次打包結果另存為zip壓縮包&#xff0c;方便后續使用。于是我準備開發一個Webpack插件實現此功能&#xf…

19day-人工智能-機器學習-分類算法-決策樹

1. 什么是決策樹學過數據結構與算法的小伙伴應該對樹不陌生吧&#xff0c;這里的決策樹也是大同小異的&#xff0c;只是每次反之都有一個條件來決定流向的。1.1 決策節點通過條件判斷而進行分支選擇的節點。如&#xff1a;將某個樣本中的屬性值(特征值)與決策節點上的值進行比較…

地球磁層全球MHD模型中模擬Dst指數的半經驗方法

A semi-empirical approach to simulating the Dst index in global MHD models of Earth’s magnetosphere pdf 1 Introduction Dst指數 (Disturbance storm time index, 地磁暴時擾動指數) 是描述磁暴活動強度應用最廣泛的指數&#xff0c;對于研究地磁擾動和磁暴具有重要意…

什么是臟讀、幻讀、不可重復讀?

臟讀、幻讀和不可重復讀是數據庫事務隔離級別中常見的三種數據一致性問題。它們描述了在并發事務環境下可能出現的異常現象。下面通過對比表格和具體示例進行清晰解析&#xff1a;核心概念對比表問題類型觸發場景本質原因示例臟讀 (Dirty Read)事務A讀取了事務B未提交的修改讀取…

騰訊位置商業授權微信小程序關鍵詞輸入提示

微信小程序JavaScript SDK 開發指南 關鍵詞輸入提示 getSuggestion(options:Object) 用于獲取輸入關鍵字的補完與提示&#xff0c;幫助用戶快速輸入 注&#xff1a;坐標系采用gcj02坐標系 options屬性說明 屬性類型必填說明keywordString是用戶輸入的關鍵詞&#xff08;希望…

LabVIEW菜單操控

該程序圍繞運行時菜單欄操作&#xff0c;實現從初始化構建菜單結構&#xff08;含菜單項、快捷鍵 &#xff09;&#xff0c;到響應交互刪除特定菜單項&#xff0c;再到監控界面事件驅動邏輯&#xff0c;完成自定義菜單交互全流程&#xff0c;適配需靈活菜單控制的程序開發場景。…

Web 服務詳解:HTTP 與 HTTPS 配置

Web 服務詳解&#xff1a;HTTP 與 HTTPS 配置 一、HTTP 服務概述 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本傳輸協議&#xff09;是用于在網絡上傳輸網頁數據的基礎協議&#xff0c;默認使用80 端口&#xff0c;以明文形式傳輸數據。常見的 HTTP 服務軟…

YOLO-v2-tiny 20種物體檢測模型

一、簡介 YOLO-v2-tiny是基于YOLO(You Only Look Once)實時目標檢測算法的輕量級版本&#xff0c;專門為嵌入式設備和資源受限環境優化。本模型能夠檢測20種常見物體類別&#xff0c;在保持較高檢測精度的同時大幅減少了計算量和模型大小。 20種物體檢測模型&#xff0c; 使用…

heterophilic graph和hetergeneous graph區別(附帶homophilic graph 和homoegeneous graph)

Heterophilic Graph&#xff08;異配圖&#xff09;連接的節點在屬性上不相似,但是所有節點和邊的類別都是同一種類型&#xff0c;數據集如squirrel / chameleon&#xff0c;它們是 heterogeneous graph&#xff08;異質圖&#xff09;而不是Heterophilic Graph&#xff08;異配…

Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞檢測,命令執行,Getshell

工具介紹 Thinkphp(GUI)漏洞利用工具&#xff0c;支持各版本TP漏洞檢測&#xff0c;命令執行&#xff0c;Getshell。JAVAFX可視化編寫&#xff0c;博主第一次用javafx來寫界面&#xff0c;第一次學習嘗試&#xff0c;僅僅只用于學習嘗試如果缺少什么payload&#xff0c;歡迎提交…

GitHub分支保護介紹(Branch Protection)(git分支保護)(通過設置規則和權限來限制對特定分支的操作的功能)

文章目錄**1. 核心功能****a. 防止誤操作****b. 強制代碼審查****c. 狀態檢查&#xff08;Status Checks&#xff09;****d. 權限控制****2. 如何設置分支保護&#xff1f;**1. **進入倉庫設置**2. **添加分支保護規則**3. **配置保護規則**4. **保存設置****3. 常見應用場景**…