Skip to content

Commit f2e760c

Browse files
committed
feat: update docker structure
feat: update docker structure test fix build fix build error fix fix docker builder error
1 parent 2d71418 commit f2e760c

3 files changed

Lines changed: 47 additions & 48 deletions

File tree

.github/workflows/build.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ jobs:
185185
uses: docker/metadata-action@v4
186186
with:
187187
images: |
188-
estrellaxd/auto_bangumi
188+
shinonomeow/auto_bangumi
189189
ghcr.io/${{ github.repository }}
190190
tags: |
191191
type=raw,value=${{ needs.version-info.outputs.version }}
@@ -197,7 +197,7 @@ jobs:
197197
uses: docker/metadata-action@v4
198198
with:
199199
images: |
200-
estrellaxd/auto_bangumi
200+
shinonomeow/auto_bangumi
201201
ghcr.io/${{ github.repository }}
202202
tags: |
203203
type=raw,value=${{ needs.version-info.outputs.version }}
@@ -222,7 +222,7 @@ jobs:
222222
uses: actions/download-artifact@v4
223223
with:
224224
name: dist
225-
path: backend/src/dist
225+
path: backend/dist
226226

227227
- name: Build and push
228228
if: ${{ needs.version-info.outputs.release == 1 && needs.version-info.outputs.dev != 1 }}
@@ -258,7 +258,7 @@ jobs:
258258
builder: ${{ steps.buildx.output.name }}
259259
platforms: linux/amd64,linux/arm64,linux/arm/v7
260260
push: false
261-
tags: estrellaxd/auto_bangumi:test
261+
tags: shinonomeow/auto_bangumi:test
262262
cache-from: type=gha, scope=${{ github.workflow }}
263263
cache-to: type=gha, scope=${{ github.workflow }}
264264

Dockerfile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
# 构建阶段
55
FROM alpine:3.18 AS builder
66

7-
ENV VENV_PATH="/opt/venv"
87

98
# 安装构建依赖
109
RUN apk add --no-cache \
@@ -25,10 +24,10 @@ ENV PATH="/root/.local/bin:$PATH"
2524
WORKDIR /build
2625

2726
# 复制依赖文件并安装(这层会被缓存,除非依赖文件改变)
28-
COPY backend/pyproject.toml backend/uv.lock ./
27+
COPY backend/pyproject.toml backend/uv.lock backend/requirements.txt ./
2928

3029
# 安装Python依赖
31-
RUN uv sync --frozen --no-dev && mv .venv $VENV_PATH
30+
RUN uv sync --frozen --no-dev
3231

3332
# 运行阶段
3433
FROM alpine:3.18 AS runtime
@@ -38,8 +37,7 @@ ENV LANG="C.UTF-8" \
3837
PUID=1000 \
3938
PGID=1000 \
4039
UMASK=022 \
41-
VENV_PATH="/opt/venv" \
42-
PATH="/opt/venv/bin:/root/.local/bin:$PATH"
40+
PATH="/root/.local/bin:$PATH"
4341

4442
WORKDIR /app
4543

@@ -65,10 +63,12 @@ RUN set -ex && \
6563
rm -rf /var/cache/apk/* /tmp/*
6664

6765
# 从构建阶段复制虚拟环境
68-
COPY --from=builder $VENV_PATH $VENV_PATH
66+
# COPY --from=builder $VENV_PATH $VENV_PATH
67+
COPY --from=builder /build/.venv /app/.venv
6968

7069
# 复制应用代码(放在最后,因为代码变更最频繁)
71-
COPY --chmod=755 backend/src/. .
70+
COPY --chmod=755 backend/src/. ./src
71+
COPY --chmod=755 backend/dist/. ./dist
7272
COPY --chmod=755 entrypoint.sh /entrypoint.sh
7373

7474
ENTRYPOINT ["tini", "-g", "--", "/entrypoint.sh"]

entrypoint.sh

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,22 @@ PID_FILE="/tmp/autobangumi.pid"
99

1010
# 信号处理函数
1111
cleanup() {
12-
echo "收到停止信号,正在清理..."
13-
SHOULD_STOP=true
14-
if [ -f "$PID_FILE" ]; then
15-
pid=$(cat "$PID_FILE")
16-
if [ -n "$pid" ]; then
17-
echo "正在停止应用进程 $pid..."
18-
kill -TERM "$pid" 2>/dev/null
19-
sleep 5
20-
# 如果进程仍在运行,强制终止
21-
if kill -0 "$pid" 2>/dev/null; then
22-
echo "强制终止应用进程 $pid..."
23-
kill -KILL "$pid" 2>/dev/null
24-
fi
25-
fi
26-
rm -f "$PID_FILE"
12+
echo "收到停止信号,正在清理..."
13+
SHOULD_STOP=true
14+
if [ -f "$PID_FILE" ]; then
15+
pid=$(cat "$PID_FILE")
16+
if [ -n "$pid" ]; then
17+
echo "正在停止应用进程 $pid..."
18+
kill -TERM "$pid" 2>/dev/null
19+
sleep 5
20+
# 如果进程仍在运行,强制终止
21+
if kill -0 "$pid" 2>/dev/null; then
22+
echo "强制终止应用进程 $pid..."
23+
kill -KILL "$pid" 2>/dev/null
24+
fi
2725
fi
26+
rm -f "$PID_FILE"
27+
fi
2828
}
2929

3030
# 设置信号捕获
@@ -41,29 +41,28 @@ chown ab:ab -R /app /home/ab
4141

4242
# 热更新重启循环
4343
while [ "$SHOULD_STOP" != "true" ]; do
44-
echo "启动 Auto_Bangumi 应用..."
45-
su-exec "${PUID}:${PGID}" ${VENV_PATH}/bin/python main.py &
46-
app_pid=$!
47-
echo $app_pid > "$PID_FILE"
48-
49-
# 等待应用结束
50-
wait $app_pid
51-
exit_code=$?
52-
rm -f "$PID_FILE"
53-
54-
# 根据退出码决定是否重启
55-
if [ "$SHOULD_STOP" = "true" ]; then
56-
echo "容器正在停止..."
57-
break
58-
elif [ $exit_code -eq 0 ]; then
59-
echo "应用正常退出,2秒后重启(热更新)..."
60-
sleep 2
61-
else
62-
echo "应用异常退出 (退出码: $exit_code),停止容器"
63-
exit $exit_code
64-
fi
44+
echo "启动 Auto_Bangumi 应用..."
45+
su-exec "${PUID}:${PGID}" .venv/bin/python src/main.py &
46+
app_pid=$!
47+
echo $app_pid >"$PID_FILE"
48+
49+
# 等待应用结束
50+
wait $app_pid
51+
exit_code=$?
52+
rm -f "$PID_FILE"
53+
54+
# 根据退出码决定是否重启
55+
if [ "$SHOULD_STOP" = "true" ]; then
56+
echo "容器正在停止..."
57+
break
58+
elif [ $exit_code -eq 0 ]; then
59+
echo "应用正常退出,2秒后重启(热更新)..."
60+
sleep 2
61+
else
62+
echo "应用异常退出 (退出码: $exit_code),停止容器"
63+
exit $exit_code
64+
fi
6565
done
6666

6767
echo "Auto_Bangumi 容器已停止"
6868
exit 0
69-

0 commit comments

Comments
 (0)