gitee 流水線+docker-compose部署 nodejs服務+mysql+redis

文章中的方法是自己琢磨出來的,或許有更優解,共同學習,共同進步!

docker-compose.yml 文件配置:

說明:【配置中有個別字段冗余,但不影響使用】該文件推薦放在nodejs項目的根目錄中,gitee流水線中也用到了路徑 ,如果修改,需要同步處理,避免異常情況

name: "node_server"services:node_server:image: node:20-alpine  # 使用官方 Node.js 鏡像(版本按需調整)container_name: node_serverports:- "8088:8088"volumes:- ./node:/usr/src/app  # 掛載本地代碼目錄到容器- /usr/src/app/node_modules  # 避免覆蓋容器內的 node_modulesworking_dir: /usr/src/app  # 設置容器內部的工作目錄networks:- node_server_netdepends_on: # 確保依賴的容器先起來- node_mysql_dev- node_redisenvironment:- DB_HOST=node_mysql_dev  # 使用服務名(Docker 網絡內 DNS 自動解析)- DB_PORT=3306- DB_USER=root- DB_PASSWORD=PASSWORD- DB_NAME=node_test01  # 按需修改- npm_config_registry=https://registry.npmjs.org- TZ=Asia/Shanghairestart: unless-stoppedcommand: sh -c "npm install --legacy-peer-deps && npm start"  # 啟動命令node_mysql_dev:image: node_mysql  # 你的自定義MySQL鏡像,若用官方鏡像可改為 `mysql:latest`container_name: node_mysql_devports:- "3306:3306"volumes:- ./mysql/conf.d:/etc/mysql/conf.d- ./mysql/data:/var/lib/mysql- ./mysql/mysql-files:/var/lib/mysql-files- ./mysql/init-scripts:/docker-entrypoint-initdb.d # sql文件位置networks:- node_server_netenvironment:- MYSQL_ROOT_PASSWORD=w43903- MYSQL_DATABASE:node_test01- TZ=Asia/Shanghai # 指定時區command:--character-set-server=utf8mb4--collation-server=utf8mb4_unicode_cirestart: unless-stoppedtty: true  # 相當于 -itd 中的 -tnode_redis:image: redis:latest  # 官方Redis鏡像container_name: node_redisports:- "6379:6379"volumes:- ./redis/data:/data- ./redis/conf/redis.conf:/etc/redis/redis.confnetworks:- node_server_netenvironment:- TZ=Asia/Shanghaicommand: redis-server /etc/redis/redis.conf  # 指定配置文件啟動restart: unless-stopped# 自定義的網絡
networks:node_server_net:

gitee流水線配置:

默認已有?服務器、倉庫、及代碼,并且遠程倉庫和本地已有關聯

新建流水線操作可以查看另一篇文章:gitee_配置自動部署vue項目-CSDN博客

這篇文章只介紹【流水線的腳本配置、docker-compose.yml 文件的配置】

流水線配置:【#-控制臺不會輸出;echo-控制臺輸出】

# NodeJs構建echo '拉取最新代碼'
git pull --rebase origin devlelopment # 分支名根據實際填寫npm config set registry https://registry.npmmirror.com && npm install# nodejs 項目不用打包,下載依賴后在服務器運行即可,下面是將項目相關文件轉為壓縮包。壓縮包名稱要與后續步驟關聯
tar -czf output.tar.gz node_modules src docker-compose.yml package.json server.jsecho '創建文件夾、移動壓縮包、列舉 dist 文件夾'
# 下游操作需要獲取當前操作的 dist 產出物,類似于 vue 項目打包后的 dist 文件夾
mkdir -p dist && mv output.tar.gz ./dist/ && ls dist/
# 主機部署腳本# 宿主機中存放 nodejs 源碼的位置
mkdir -p ~/docker/node_server/node# 清空,避免緩存
rm -rf ~/docker/node_server/node/*echo '解壓內容'
# output.tar.gz 壓縮包是上游的產出物,內部包含 dist 文件夾
tar zxvf ~/docker/node_server/gitee_go/deploy/output.tar.gz -C ~/docker/node_server/nodeecho '查看 ~/docker/node_server/node'
ls ~/docker/node_server/nodeecho '解壓文件到指定路徑'
# 這個 output.tar.gz 壓縮包是上游操作中手動執行壓縮的項目文件,內部包含 docker-compose.yml 文件
tar zxvf ~/docker/node_server/node/dist/output.tar.gz -C ~/docker/node_server/nodeecho '移動 docker-compose.yml 到~/docker/node_server 并查看'
mv ~/docker/node_server/node/docker-compose.yml ~/docker/node_server && ls ~/docker/node_server/echo '刪除多余文件夾'
rm -rf ~/docker/node_server/node/dist ~/docker/node_server/gitee_go# 以上操作會進入內部文件夾,直接執行構建鏡像操作會導致找不到配置文件
cd ~/docker/node_serverecho '移除容器、構建鏡像并啟動容器'
# 移除容器:如果不移除并直接執行打包的話,會導致鏡像不更新
docker compose down && docker compose build && docker compose up -d
echo 'Hello Gitee Go!'

腳本執行完畢后,容器會根據依賴關系挨個啟動,需要短暫時間更新狀態

可以執行一下指令查看狀態:

查看已經啟動的容器
?? ?docker compose ps

啟動被停止的容器(重啟容器)
?? ?docker compose start/restart [容器名]

進入容器
?? ?docker compose exec 容器名 bash

查看服務日志
?? ?docker compose logs [-f]
?? ??? ?-f 代表輸出實時日志

用于停止和移除由 docker compose up 創建的容器、網絡和卷
?? ?docker compose down

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93391.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93391.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93391.shtml

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

相關文章

【算法】模擬專題

什么是模擬? 是一種通過模仿現實世界或問題場景的運行過程來求解問題的算法思想。它不依賴復雜的數學推導或邏輯優化,而是按照問題的實際規則、步驟或流程,一步步地 “復現” 過程,最終得到結果。 使用場景:當問題的邏…

【FreeRTOS】刨根問底6: 應該如何防止任務棧溢出?

【加關注,不迷路】一、棧溢出:程序世界的“越界洪水”就象一個裝水的玻璃杯(棧空間),每次調用函數就像向水杯中倒水(壓入保護需要恢復的數據)。當函數嵌套調用過深(如遞歸失控&#…

牛客周賽 Round 105

A.小苯的xor構造題目描述小紅喜歡整數 k&#xff0c;他想讓小苯構造兩個不相等的非負整數&#xff0c;使得兩數的異或和等于 k。請你幫幫小苯。#include <bits/stdc.h> using namespace std; using ll long long; void solve() {int k;cin>>k;cout<<0<&l…

《R for Data Science (2e)》免費中文翻譯 (第4章) --- Workflow: code style

寫在前面 本系列推文為《R for Data Science (2)》的中文翻譯版本。所有內容都通過開源免費的方式上傳至Github&#xff0c;歡迎大家參與貢獻&#xff0c;詳細信息見&#xff1a; Books-zh-cn 項目介紹&#xff1a; Books-zh-cn&#xff1a;開源免費的中文書籍社區 r4ds-zh-cn …

11-verilog的RTC驅動代碼

verilog的RTC驅動代碼 1.例化parameter SLAVE_ADDR 7h51 ; // 器件地址 parameter BIT_CTRL 1b0 ; // 字地址位控制參數(16b/8b) parameter CLK_FREQ 26d50_000_000; // i2c_dri模塊的驅動時鐘頻率(CLK_FREQ) parameter I2C_FR…

【k8s、docker】Headless Service(無頭服務)

文章目錄問題背景1、什么是Headless Service1.2 為什么 Zookeeper 使用 Headless Service&#xff1f;1.2 Headless Service 的 DNS 行為1.3 驗證示例1.4 如何創建 Headless Service&#xff1f;2. zk-0.zookeeper.default.svc.cluster.local 域名是如何創建出來的&#xff1f;…

scikit-learn/sklearn學習|套索回歸Lasso解讀

【1】引言 前序學習進程中&#xff0c;對用scikit-learn表達線性回歸進行了初步解讀。 線性回歸能夠將因變量yyy表達成由自變量xxx、線性系數矩陣www和截距bbb組成的線性函數式&#xff1a; y∑i1nwi?xibwTxby\sum_{i1}^{n}w_{i}\cdot x_{i}bw^T{x}byi1∑n?wi??xi?bwTxb實…

暴雨服務器:以定制化滿足算力需求多樣化

在數字經濟與實體經濟深度融合的浪潮下&#xff0c;互聯網行業正經歷著前所未有的技術變革。大數據分析、云計算服務、人工智能算法等技術的快速演進&#xff0c;推動著企業對于高性能計算基礎設施的需求呈現指數級增長。據IDC數據顯示&#xff0c;互聯網行業已成為全球服務器采…

JavaScript字符串詳解

創建字符串&#xff1a; 1.使用字面量(推薦)&#xff1a; 這是最常用、最直接的方式。你可以用單引號 ()、雙引號 (") 或反引號 () 把文本包起來 let singleQuote 單引號; let doubleQuote "雙引號"; let templateLiteral 反引號;2.使用String 構造函數&…

Kiro Preview 應用評測

Kiro應用評測 Kiro 是一個由亞馬遜推出的 AI 驅動的智能開發環境&#xff0c;從原型到生產全程陪伴您的開發過程。它將"靈感編程"的流暢性與規范的清晰性相結合&#xff0c;幫助您更快地構建更好的軟件。 昨天收到了Kiro的試用郵件&#xff0c;收到郵件后第一時間下載…

Flink2.0學習筆記:Flink服務器搭建與flink作業提交

一&#xff0c;下載flink:Downloads | Apache Flink,解壓后放入IDE工作目錄&#xff1a;我這里以1.17版本為例 可以看到&#xff0c;flink后期的版本中沒有提供window啟動腳本:start-cluster.bat 所以這里要通過windows自帶的wsl 系統啟動它 打開終端依次運行下列命令完成w…

MySQL鎖的分類

MySQL鎖可以按照多個維度進行分類&#xff0c;下面我用最清晰的方式為你梳理所有分類方式&#xff1a;一、按鎖的粒度分類&#xff08;最常用分類&#xff09;鎖類型作用范圍特點適用引擎示例場景表級鎖整張表開銷小、加鎖快&#xff0c;并發度低MyISAM, MEMORY數據遷移、全表統…

電腦上搭建HTTP服務器在局域網內其它客戶端無法訪問的解決方案

在電腦上開發一套HTTP服務器的程序在調試時&#xff0c;在本機內訪問正常&#xff0c;但是在本機外訪問就不正常&#xff0c;外部客戶端無法訪問或無法連接到本機的服務器的問題&#xff0c;這可能涉及網絡配置、防火墻、端口轉發或服務綁定等問題&#xff0c;在這里提供了解決…

雙指針和codetop2(最短路問題BFS)

雙指針和codetop21.雙指針1.[復寫0](https://leetcode.cn/problems/duplicate-zeros/)2.動態規劃1.[珠寶的最高價值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/description/)2.[解碼方法](https://leetcode.cn/problems/decode-ways/)3.[下降路徑最小和](ht…

基于K鄰近算法(KNN)的數據回歸預測模型

一、作品詳細簡介 1.1附件文件夾程序代碼截圖 全部完整源代碼&#xff0c;請在個人首頁置頂文章查看&#xff1a; 學行庫小秘_CSDN博客https://blog.csdn.net/weixin_47760707?spm1000.2115.3001.5343 1.2各文件夾說明 1.2.1 main.m主函數文件 該MATLAB代碼實現了一個基于…

【123頁PPT】化工行業數字化解決方案(附下載方式)

篇幅所限&#xff0c;本文只提供部分資料內容&#xff0c;完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808859/91654005 資料解讀&#xff1a;【123頁PPT】化工行業數字化解決方案 詳細資料請看本解讀文章的最后內容。化工行業作為國民經濟的重要支柱之…

c++--文件頭注釋/doxygen

文件頭注釋 開源項目&#xff1a; /*** file robot_base.cpp* author Mr.Wu* date 2025-05-28* version 1.0.0* brief Robot basic drive to communicate with controller** copyright Copyright (c) 2025 google.** Licensed under the Apache License, Version 2.…

【教程】筆記本安裝FnOS設置合蓋息屏不休眠

重裝FnOS好幾次了&#xff0c;合蓋后屏幕關閉但不休眠的問題每次都要網上找參差不齊的教程&#xff0c;麻煩死了&#xff0c;索性記錄一下方便以后復制粘貼。 使用root登錄 sudo -i修改系統配置文件編輯logind.conf文件&#xff1a; 打開終端&#xff0c;輸入以下命令以編輯log…

深入解析 Monkey OCR:本地化、多語言文本識別的利器與實踐指南

在信息爆炸的時代&#xff0c;從圖片、掃描文檔中高效提取結構化文本的需求日益迫切。OCR&#xff08;光學字符識別&#xff09;技術成為解決這一問題的核心工具。盡管市面上有 Abbyy FineReader、Adobe Acrobat 等商業巨頭&#xff0c;以及 Tesseract、PaddleOCR 等開源方案&a…

動態規劃法 - 53. 最大子數組和

什么是動態規劃法&#xff1f; 簡單說&#xff0c;動態規劃&#xff08;Dynamic Programming&#xff0c;簡稱 DP&#xff09; 是一種**「把復雜問題拆解成小問題&#xff0c;通過解決小問題來解決大問題」**的方法。 核心思路有兩個&#xff1a; 1.拆分問題&#xff1a;把原問…