Docker 應用安裝腳本

install_mysql57_base_docker.sh

一個託管在 helper.sh 的腳本,會建立 /data/mysql5.7 目錄結構、寫入基礎 MySQL 5.7 設定、拉取 mysql:5.7.44,並以宿主機掛載目錄的方式啟動容器。

一鍵命令

curl -fL 'https://www.helper.sh/install_mysql57_base_docker.sh' -o './install_mysql57_base_docker.sh'

此命令只會下載本站檔案,不會執行。請先檢查儲存的原始碼並核對版本,再決定是否執行。

核對已下載檔案

與本頁面建置時內建的確切位元組比較。檔案僅在目前分頁處理,此工具不上傳、不持久儲存檔案。上限2 MiB。

預期 SHA-256
6d16610c307e30338e693a6cfdbf6d86ffa85e6260b7407346ae3ca1bddf9ef3

內建檔案位元組數: 6038

儲存校驗檔案

將腳本與校驗檔案儲存在同一目錄。Linux 安裝 GNU Coreutils 後可用下方命令僅檢查位元組,不執行腳本;使用此命令時需保留原檔名。

sha256sum --check './install_mysql57_base_docker.sh.sha256'

尚未比較。

校驗值與腳本來自同一網站,不是獨立簽章。一致不證明安全、上游相依項目真實可信或適合本機;可變遠端相依項目需單獨審閱。

查看驗證與限制

執行要求

  • Linux 主機
  • Docker 已安裝並運行
  • 需要 root 權限或 sudo
  • 3306 埠可用
  • /data 目錄可寫

適用場景

  • 在已具備 Docker 環境的主機上快速啟動一個 MySQL 5.7 實例
  • 把 MySQL 資料、設定與初始化 SQL 統一保存在 /data/mysql5.7 下
  • 為仍然依賴 MySQL 5.7 的舊專案提供標準化的一鍵安裝入口

腳本亮點

  • 自動建立 /data/mysql5.7/data、conf.d 與 init
  • 拉取 mysql:5.7.44 並以可自動重啟的容器方式運行
  • 如果沒有提供 root 密碼,會自動產生強密碼
  • 支援可選的初始資料庫、使用者與密碼初始化

推薦流程

  1. 先確認 Docker 已安裝可用,且宿主機的 3306 埠沒有被占用。
  2. 使用 sudo 或 root 執行 helper.sh 提供的一鍵命令。
  3. 等待腳本準備 /data/mysql5.7、拉取 mysql:5.7.44,並建立資料庫容器。
  4. 把輸出中的 root 密碼與可選初始化使用者資訊記錄下來,再交給業務側使用。

安全提示

  • 不要在沒有網路存取控制的情況下把 MySQL 5.7 直接暴露到公網。
  • 如果使用了自動產生的 root 密碼,請立刻記錄保存。
  • 如果這是正式實例,替換或重建容器前請先備份 /data/mysql5.7。

相容範圍與限制

  • 需要 Linux、systemd、Docker 與 root 權限;預設使用主機的 3306 埠。映像固定為 mysql:5.7.44,應視為舊應用相容範例。
  • 腳本接受 --data-dir、--container-name、--port、--root-password、--database、--user 與 --password;也會讀取 MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD 環境變數。沒有 dry-run 或備份。
  • 腳本會發布所選主機埠;Docker 的埠發布可能繞過部分主機防火牆規則。未經審查網路存取控制時,不要公開 MySQL。密碼會作為 Docker 環境參數傳入、保存在可檢查的容器設定中,並由腳本輸出;避免寫入 Shell 歷史或共用記錄。

受影響的檔案、服務與資料

  • 建立 /data/mysql5.7/data、conf.d 與 init。只有 mysql57.cnf 不存在時才寫入;既有資料與設定會沿用。
  • Docker 未執行時會啟動它,拉取 mysql:5.7.44;若同名容器已存在,會強制刪除後建立新的自動重啟容器,並掛載主機目錄、發布埠。
  • 刪除舊容器不會刪除主機 bind mount 資料目錄;但腳本在沿用前不會備份資料。

唯讀核驗

  • 以下範例使用預設容器名稱 mysql57;若修改了 --container-name,請替換該值。檢查 `docker ps --filter name=mysql57` 與 `docker logs --tail 100 mysql57`。
  • 以 `docker inspect mysql57 --format '{{json .HostConfig.PortBindings}} {{json .Mounts}}'` 檢查埠對應與掛載。
  • 執行 `docker exec -it mysql57 mysqladmin ping -h 127.0.0.1 -uroot -p` 與 `docker exec -it mysql57 mysql -uroot -p -e 'SELECT VERSION();'`;在提示時輸入密碼。

失敗後的下一步

就緒檢查失敗時,檢查容器日誌、磁碟空間、所選資料目錄與憑證。重試前先保全主機資料;即使健康檢查只有警告,腳本最後仍可能輸出「completed」。

先下載、審閱並核對版本,再決定是否執行。雜湊只能識別這一版位元組,不能證明安全。pipe 命令會立即執行遠端內容;上游依賴也可能變動。

相關專題

Ubuntu:準備 Docker 或 VPN 接入

區分主機安裝、用戶端接入與既有 Docker 服務,不把舊應用映像作為新架構預設選擇。

查看專題

Docker 服務:檢查介面與保留狀態

按協定、資料目錄與取代影響區分 HTTP、SQL、快取、FastCGI 或映像內應用。

查看專題

問題頁面

為什麼重建 MySQL 5.7 容器後舊密碼仍然有效

安裝腳本重建 mysql57 時會繼續掛載 /data/mysql5.7/data。MySQL 只會在資料目錄為空時初始化帳號,因此既有資料庫不會因安裝變數變更而重設憑證。

打開頁面