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
|
||||
APP_NAME=ktvcentral
|
||||
APP_DOMAIN=ktvcentral.test
|
||||
APP_DOMAIN=superstarzqd.dnsnet.cc
|
||||
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
|
||||
DB_HOST=mariadb
|
||||
@ -10,10 +13,3 @@ DB_PORT=3306
|
||||
DB_DATABASE=KaraokeKingpin
|
||||
DB_USERNAME=KaraokeKingpin
|
||||
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 ./data/KTVCentral/ /var/www/html/
|
||||
COPY ./data/html/ /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 && \
|
||||
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
|
||||
|
||||
|
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
|
||||
container_name: ${APP_NAME}_app
|
||||
volumes:
|
||||
- ./data/KTVCentral:/var/www/html
|
||||
- ./data/html:/var/www/html
|
||||
- ./data/logs:/var/www/logs
|
||||
- ./docker/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf
|
||||
depends_on:
|
||||
@ -43,7 +43,7 @@ services:
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- ./data/KTVCentral:/var/www/html
|
||||
- ./data/html:/var/www/html
|
||||
- ./docker/nginx/:/etc/nginx/templates
|
||||
- ./data/logs/nginx/:/var/log/nginx
|
||||
depends_on:
|
||||
@ -58,7 +58,7 @@ services:
|
||||
context: .
|
||||
dockerfile: Dockerfile.queue
|
||||
volumes:
|
||||
- ./data/KTVCentral:/var/www/html
|
||||
- ./data/html:/var/www/html
|
||||
depends_on:
|
||||
- nginx
|
||||
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%/}"
|
||||
|
||||
|
||||
# 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..."
|
||||
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
|
||||
|
||||
# 使用 .env 中的 APP_NAME 作為 project name
|
||||
PROJECT_NAME="${APP_NAME:-ktvproject}"
|
||||
PROJECT_NAME="${APP_NAME}"
|
||||
|
||||
echo "♻️ 正在重新啟動 $PROJECT_NAME 所有服務..."
|
||||
|
||||
|
3
start.sh
3
start.sh
@ -31,6 +31,9 @@ if [ "$WIPE" == "true" ]; then
|
||||
EXTRA_FLAGS="up -d --build"
|
||||
fi
|
||||
|
||||
echo "🚀 get APP to git services..."
|
||||
docker compose -f docker-compose.git.yml $EXTRA_FLAGS
|
||||
|
||||
echo "🚀 Starting APP services..."
|
||||
docker compose -p $PROJECT_NAME -f docker-compose.yml $EXTRA_FLAGS
|
||||
|
||||
|
@ -10,7 +10,7 @@ else
|
||||
fi
|
||||
|
||||
# 使用 .env 中的 APP_NAME 作為 project name
|
||||
PROJECT_NAME="${APP_NAME:-ktvproject}"
|
||||
PROJECT_NAME="${APP_NAME}"
|
||||
|
||||
echo "📊 目前 $PROJECT_NAME 相關容器狀態:"
|
||||
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=""
|
||||
if [ "$WIPE" == "true" ]; then
|
||||
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(如果不存在)
|
||||
if ! docker network ls --format '{{.Name}}' | grep -wq "$NETWORK_NAME"; then
|
||||
echo "🔌 Docker 網路 $NETWORK_NAME 不存在"
|
||||
@ -29,12 +35,6 @@ if [ "$WIPE" == "true" ]; then
|
||||
docker network rm $NETWORK_NAME
|
||||
echo "🔌 Docker 網路 $NETWORK_NAME 已刪除"
|
||||
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)已清除!"
|
||||
else
|
||||
echo "✅ 所有服務 $PROJECT_NAME 已成功關閉。"
|
||||
|
Reference in New Issue
Block a user