Laravel 第一版 加入git clone git pull
This commit is contained in:
parent
9a89e4dffc
commit
1f1641600d
14
.env.example
14
.env.example
@ -1,8 +1,11 @@
|
|||||||
# Project
|
# Project
|
||||||
APP_NAME=ktvcentral
|
APP_NAME=ktvcentral
|
||||||
APP_DOMAIN=ktvcentral.test
|
APP_DOMAIN=superstarzqd.dnsnet.cc
|
||||||
APP_PORT=80
|
APP_PORT=80
|
||||||
APP_URL=https://ktvcentral.test
|
APP_URL=http://superstarzqd.dnsnet.cc/
|
||||||
|
|
||||||
|
REPO_URL="http://47.251.18.130:3000/Leecheng/KTVCentral.git"
|
||||||
|
REPO_BRANCH="main"
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
DB_HOST=mariadb
|
DB_HOST=mariadb
|
||||||
@ -10,10 +13,3 @@ DB_PORT=3306
|
|||||||
DB_DATABASE=KaraokeKingpin
|
DB_DATABASE=KaraokeKingpin
|
||||||
DB_USERNAME=KaraokeKingpin
|
DB_USERNAME=KaraokeKingpin
|
||||||
DB_PASSWORD=ESM7yTPMnavFmbBH
|
DB_PASSWORD=ESM7yTPMnavFmbBH
|
||||||
|
|
||||||
# Redis
|
|
||||||
REDIS_HOST=redis
|
|
||||||
REDIS_PORT=6379
|
|
||||||
QUEUE_CONNECTION=redis
|
|
||||||
CACHE_DRIVER=redis
|
|
||||||
SESSION_DRIVER=redis
|
|
@ -13,7 +13,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
|
|
||||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||||
|
|
||||||
COPY ./data/KTVCentral/ /var/www/html/
|
COPY ./data/html/ /var/www/html/
|
||||||
|
|
||||||
RUN chown -R www-data:www-data /var/www/html
|
RUN chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
|
21
Dockerfile.git
Normal file
21
Dockerfile.git
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
FROM debian:bullseye-slim
|
||||||
|
|
||||||
|
# 安裝必要工具
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
git supervisor bash curl ca-certificates \
|
||||||
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# 建立目錄
|
||||||
|
RUN mkdir -p /app /var/log /etc/supervisor
|
||||||
|
|
||||||
|
# 複製 supervisord 設定與啟動腳本
|
||||||
|
COPY supervisord.git.conf /etc/supervisor/supervisord.conf
|
||||||
|
COPY entrypoint.git.sh /app/entrypoint.sh
|
||||||
|
|
||||||
|
# 權限設定
|
||||||
|
RUN chmod +x /app/entrypoint.sh
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 使用 supervisord 啟動
|
||||||
|
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
|
@ -5,7 +5,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
git unzip zip curl libzip-dev libonig-dev libxml2-dev && \
|
git unzip zip curl libzip-dev libonig-dev libxml2-dev && \
|
||||||
docker-php-ext-install pdo_mysql zip bcmath
|
docker-php-ext-install pdo_mysql zip bcmath
|
||||||
|
|
||||||
COPY ./data/KTVCentral/ /var/www/html/
|
COPY ./data/html/ /var/www/html/
|
||||||
|
|
||||||
RUN chown -R www-data:www-data /var/www/html
|
RUN chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
|
13
docker-compose.git.yml
Normal file
13
docker-compose.git.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
services:
|
||||||
|
git_worker:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.git
|
||||||
|
container_name: git_worker
|
||||||
|
volumes:
|
||||||
|
- ./data/html:/app
|
||||||
|
- ./data/logs/git/:/var/log/
|
||||||
|
environment:
|
||||||
|
- REPO_URL=${REPO_URL}
|
||||||
|
- BRANCH=${REPO_BRANCH}
|
||||||
|
restart: unless-stopped
|
@ -22,7 +22,7 @@ services:
|
|||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
container_name: ${APP_NAME}_app
|
container_name: ${APP_NAME}_app
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/KTVCentral:/var/www/html
|
- ./data/html:/var/www/html
|
||||||
- ./data/logs:/var/www/logs
|
- ./data/logs:/var/www/logs
|
||||||
- ./docker/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf
|
- ./docker/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf
|
||||||
depends_on:
|
depends_on:
|
||||||
@ -43,7 +43,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/KTVCentral:/var/www/html
|
- ./data/html:/var/www/html
|
||||||
- ./docker/nginx/:/etc/nginx/templates
|
- ./docker/nginx/:/etc/nginx/templates
|
||||||
- ./data/logs/nginx/:/var/log/nginx
|
- ./data/logs/nginx/:/var/log/nginx
|
||||||
depends_on:
|
depends_on:
|
||||||
@ -58,7 +58,7 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile.queue
|
dockerfile: Dockerfile.queue
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/KTVCentral:/var/www/html
|
- ./data/html:/var/www/html
|
||||||
depends_on:
|
depends_on:
|
||||||
- nginx
|
- nginx
|
||||||
networks:
|
networks:
|
||||||
|
21
docker/entrypoint.git.sh
Normal file
21
docker/entrypoint.git.sh
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
REPO_URL=${REPO_URL:-https://github.com/your/repo.git}
|
||||||
|
BRANCH=${BRANCH:-main}
|
||||||
|
|
||||||
|
# 若資料夾為空則 clone
|
||||||
|
if [ -z "$(ls -A /app | grep -v 'entrypoint.sh')" ]; then
|
||||||
|
echo "[git-worker] Cloning repository..."
|
||||||
|
git clone --branch "$BRANCH" "$REPO_URL" /app
|
||||||
|
else
|
||||||
|
echo "[git-worker] Repository exists, skipping clone."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 定時 git pull
|
||||||
|
echo "[git-worker] Starting periodic git pull..."
|
||||||
|
while true; do
|
||||||
|
cd /app
|
||||||
|
echo "[git-worker] Pulling latest changes from $BRANCH..."
|
||||||
|
git pull origin "$BRANCH"
|
||||||
|
sleep 300
|
||||||
|
done
|
@ -5,16 +5,6 @@ cd /var/www/html
|
|||||||
APP_URL="${APP_URL%/}"
|
APP_URL="${APP_URL%/}"
|
||||||
|
|
||||||
|
|
||||||
# if [ ! -d "html" ]; then
|
|
||||||
# if [ -n "$GIT_REPO_URL" ]; then
|
|
||||||
# echo "Cloning project from ${GIT_REPO_URL}..."
|
|
||||||
# git clone "$GIT_REPO_URL" html
|
|
||||||
# else
|
|
||||||
# echo "GIT_REPO_URL not set. Skipping clone."
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
#fi
|
|
||||||
|
|
||||||
|
|
||||||
echo "Running composer install..."
|
echo "Running composer install..."
|
||||||
composer install --no-interaction --prefer-dist
|
composer install --no-interaction --prefer-dist
|
||||||
|
12
docker/supervisord.git.conf
Normal file
12
docker/supervisord.git.conf
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[supervisord]
|
||||||
|
nodaemon=true
|
||||||
|
logfile=/var/log/supervisord.log
|
||||||
|
pidfile=/var/run/supervisord.pid
|
||||||
|
|
||||||
|
[program:git-worker]
|
||||||
|
command=/app/entrypoint.sh
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
startsecs=0
|
||||||
|
stdout_logfile=/var/log/git-worker.log
|
||||||
|
stderr_logfile=/var/log/git-worker.err.log
|
@ -15,7 +15,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 使用 .env 中的 APP_NAME 作為 project name
|
# 使用 .env 中的 APP_NAME 作為 project name
|
||||||
PROJECT_NAME="${APP_NAME:-ktvproject}"
|
PROJECT_NAME="${APP_NAME}"
|
||||||
|
|
||||||
echo "♻️ 正在重新啟動 $PROJECT_NAME 所有服務..."
|
echo "♻️ 正在重新啟動 $PROJECT_NAME 所有服務..."
|
||||||
|
|
||||||
|
3
start.sh
3
start.sh
@ -31,6 +31,9 @@ if [ "$WIPE" == "true" ]; then
|
|||||||
EXTRA_FLAGS="up -d --build"
|
EXTRA_FLAGS="up -d --build"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "🚀 get APP to git services..."
|
||||||
|
docker compose -f docker-compose.git.yml $EXTRA_FLAGS
|
||||||
|
|
||||||
echo "🚀 Starting APP services..."
|
echo "🚀 Starting APP services..."
|
||||||
docker compose -p $PROJECT_NAME -f docker-compose.yml $EXTRA_FLAGS
|
docker compose -p $PROJECT_NAME -f docker-compose.yml $EXTRA_FLAGS
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 使用 .env 中的 APP_NAME 作為 project name
|
# 使用 .env 中的 APP_NAME 作為 project name
|
||||||
PROJECT_NAME="${APP_NAME:-ktvproject}"
|
PROJECT_NAME="${APP_NAME}"
|
||||||
|
|
||||||
echo "📊 目前 $PROJECT_NAME 相關容器狀態:"
|
echo "📊 目前 $PROJECT_NAME 相關容器狀態:"
|
||||||
docker ps --filter "name=${PROJECT_NAME}_" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
docker ps --filter "name=${PROJECT_NAME}_" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||||
|
12
stop.sh
12
stop.sh
@ -22,6 +22,12 @@ NETWORK_NAME="${APP_NAME}_network"
|
|||||||
EXTRA_FLAGS=""
|
EXTRA_FLAGS=""
|
||||||
if [ "$WIPE" == "true" ]; then
|
if [ "$WIPE" == "true" ]; then
|
||||||
EXTRA_FLAGS="-v --rmi all"
|
EXTRA_FLAGS="-v --rmi all"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "🛑 Stopping APP services..."
|
||||||
|
docker compose -p "$PROJECT_NAME" -f docker-compose.yml down $EXTRA_FLAGS
|
||||||
|
|
||||||
|
if [ "$WIPE" == "true" ]; then
|
||||||
# 檢查並建立 network(如果不存在)
|
# 檢查並建立 network(如果不存在)
|
||||||
if ! docker network ls --format '{{.Name}}' | grep -wq "$NETWORK_NAME"; then
|
if ! docker network ls --format '{{.Name}}' | grep -wq "$NETWORK_NAME"; then
|
||||||
echo "🔌 Docker 網路 $NETWORK_NAME 不存在"
|
echo "🔌 Docker 網路 $NETWORK_NAME 不存在"
|
||||||
@ -29,12 +35,6 @@ if [ "$WIPE" == "true" ]; then
|
|||||||
docker network rm $NETWORK_NAME
|
docker network rm $NETWORK_NAME
|
||||||
echo "🔌 Docker 網路 $NETWORK_NAME 已刪除"
|
echo "🔌 Docker 網路 $NETWORK_NAME 已刪除"
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
echo "🛑 Stopping APP services..."
|
|
||||||
docker compose -p "$PROJECT_NAME" -f docker-compose.yml down $EXTRA_FLAGS
|
|
||||||
|
|
||||||
if [ "$WIPE" == "true" ]; then
|
|
||||||
echo "🧹 所有資料(volumes, image)已清除!"
|
echo "🧹 所有資料(volumes, image)已清除!"
|
||||||
else
|
else
|
||||||
echo "✅ 所有服務 $PROJECT_NAME 已成功關閉。"
|
echo "✅ 所有服務 $PROJECT_NAME 已成功關閉。"
|
||||||
|
Reference in New Issue
Block a user