## bash

“`bash
cp aa.md bb.md
“`

“`bash
#!/bin/bash

# 配置文件
MAIN_COMPOSE_FILE=”docker-compose.yml”
EXTRA_COMPOSE_FILE=”docker-compose-extras.yml”
CONFIG_SOURCE_DIR=”../conf”

# 颜色定义
RED=’\033[31m’
GREEN=’\033[32m’
YELLOW=’\033[33m’
BLUE=’\033[34m’
RESET=’\033[0m’

# 带颜色输出函数
error_echo() { echo -e “${RED}[ERROR] $* ${RESET}”; }
warn_echo() { echo -e “${YELLOW}[WARN] $* ${RESET}”; }
info_echo() { echo -e “${BLUE}[INFO] $* ${RESET}”; }
success_echo() { echo -e “${GREEN}[SUCCESS] $* ${RESET}”; }

# 操作菜单
show_menu() {
clear
echo “========================================”
echo ” Docker 项目管理脚本”
echo “========================================”
echo ” 1. 加载配置文件”
echo ” 2. 启动主服务”
echo ” 3. 查看主服务状态”
echo ” 4. 停止并清理主服务”
echo ” 5. 启动附加服务”
echo ” 6. 查看附加服务状态”
echo ” 7. 停止并清理附加服务”
echo ” 8. 拉取最新镜像”
echo ” 0. 退出”
echo “========================================”
}

# 加载配置文件
load_config() {
info_echo “正在从 ${CONFIG_SOURCE_DIR} 加载配置文件…”

if [ -d “${CONFIG_SOURCE_DIR}” ]; then
cp -v “${CONFIG_SOURCE_DIR}”/* . 2>/dev/null
if [ $? -eq 0 ]; then
success_echo “配置文件加载完成”
else
error_echo “配置文件复制失败,请检查源目录权限”
return 1
fi
else
error_echo “配置目录 ${CONFIG_SOURCE_DIR} 不存在”
return 1
fi
}

# 执行 Docker 命令
run_docker_cmd() {
local cmd_type=$1
local compose_file=$2
local sub_cmd=$3

case $cmd_type in
“main”)
info_echo “执行主服务操作: docker compose ${sub_cmd}”
docker compose -f “${MAIN_COMPOSE_FILE}” $sub_cmd
;;
“extra”)
info_echo “执行附加服务操作: docker compose ${sub_cmd}”
docker compose -f “${EXTRA_COMPOSE_FILE}” $sub_cmd
;;
“pull”)
info_echo “正在拉取所有服务的最新镜像…”
docker compose -f “${MAIN_COMPOSE_FILE}” -f “${EXTRA_COMPOSE_FILE}” pull
;;
*)
error_echo “未知的命令类型”
return 1
;;
esac

if [ $? -ne 0 ]; then
error_echo “命令执行失败”
return 1
fi
}

# 主逻辑
while true; do
show_menu
read -p “请输入操作编号 (0-8): ” choice

case $choice in
1)
load_config
read -p “按回车键继续…”
;;
2)
run_docker_cmd “main” “${MAIN_COMPOSE_FILE}” “up -d”
read -p “按回车键继续…”
;;
3)
run_docker_cmd “main” “${MAIN_COMPOSE_FILE}” “ps -a”
read -p “按回车键继续…”
;;
4)
run_docker_cmd “main” “${MAIN_COMPOSE_FILE}” “down -v”
read -p “按回车键继续…”
;;
5)
run_docker_cmd “extra” “${EXTRA_COMPOSE_FILE}” “up -d”
read -p “按回车键继续…”
;;
6)
run_docker_cmd “extra” “${EXTRA_COMPOSE_FILE}” “ps -a”
read -p “按回车键继续…”
;;
7)
run_docker_cmd “extra” “${EXTRA_COMPOSE_FILE}” “down -v”
read -p “按回车键继续…”
;;
8)
run_docker_cmd “pull”
read -p “按回车键继续…”
;;
0)
info_echo “感谢使用,再见!”
exit 0
;;
*)
error_echo “无效的输入,请重新选择”
sleep 1
;;
esac
done
“`

## latex

## ini

## yaml
“`yaml
version: “3”

services:
flatnotes:
container_name: flatnotes
image: dullage/flatnotes:latest
environment:
PUID: 1000
PGID: 1000
FLATNOTES_AUTH_TYPE: “none”
#FLATNOTES_USERNAME: “user”
#FLATNOTES_PASSWORD: “changeMe!”
#FLATNOTES_SECRET_KEY: “aLongRandomSeriesOfCharacters”
volumes:
– “./data:/data”
# Optional. Allows you to save the search index in a different location:
# – “./index:/data/.flatnotes”
ports:
– “8088:8080”
restart: unless-stopped
“`

## nginx

## mermaid

“`mermaid
graph LR
A[Square Rect] — Link text –> B((Circle))
A –> C(Round Rect)
B –> D{Rhombus}
C –> D
“`

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注