From f9d59547f6482db3d909b5feb69db3be5177dfc7 Mon Sep 17 00:00:00 2001
From: initialencounter <2911583893@qq.com>
Date: Fri, 25 Oct 2024 12:31:19 +0800
Subject: [PATCH] rollback gosu
Signed-off-by: initialencounter <2911583893@qq.com>
---
Dockerfile | 2 ++
README.md | 20 +++++++++++++++++---
base/Dockerfile | 1 +
entrypoint.sh | 12 +++++++++---
4 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 3badc17..08d0703 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,7 @@
FROM mlikiowa/napcat-docker:base
+RUN useradd --no-log-init -d /app napcat
+
WORKDIR /app
COPY NapCat.Shell.zip entrypoint.sh napcat.packet.production.py /app/
diff --git a/README.md b/README.md
index 5a759a4..378fe10 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,8 @@
docker run -d \
-e ACCOUNT=<机器人qq> \
-e WS_ENABLE=true \
+-e NAPCAT_GID=$(id -g) \
+-e NAPCAT_UID=$(id -u) \
-p 3001:3001 \
-p 6099:6099 \
--name napcat \
@@ -42,6 +44,8 @@ services:
environment:
- ACCOUNT=<机器人qq>
- WS_ENABLE=true
+ - NAPCAT_UID=${NAPCAT_UID}
+ - NAPCAT_GID=${NAPCAT_GID}
ports:
- 3001:3001
- 6099:6099
@@ -52,7 +56,7 @@ services:
image: mlikiowa/napcat-docker:latest
```
-使用 `docker-compose up -d` 运行到后台
+使用 `NAPCAT_UID=$(id -u); NAPCAT_GID=$(id -g); docker-compose up -d` 运行到后台
## 反向 WS
@@ -84,6 +88,8 @@ services:
- ACCOUNT=<机器人qq>
- WSR_ENABLE=true
- WS_URLS=["ws://192.168.3.8:5140/onebot"]
+ - NAPCAT_UID=${NAPCAT_UID}
+ - NAPCAT_GID=${NAPCAT_GID}
container_name: napcat
network_mode: bridge
privileged: true
@@ -93,7 +99,7 @@ services:
image: mlikiowa/napcat-docker:latest
```
-使用 `docker-compose up -d` 运行到后台
+使用 `NAPCAT_UID=$(id -u); NAPCAT_GID=$(id -g); docker-compose up -d` 运行到后台
## HTTP
@@ -108,6 +114,8 @@ docker run -d \
-e HTTP_ENABLE=true \
-e HTTP_POST_ENABLE=true \
-e HTTP_URLS='["http://192.168.3.8:5140/onebot"]' \
+-e NAPCAT_GID=$(id -g) \
+-e NAPCAT_UID=$(id -u) \
-p 3000:3000 \
-p 6099:6099 \
--name napcat \
@@ -129,6 +137,8 @@ services:
- HTTP_ENABLE=true
- HTTP_POST_ENABLE=true
- HTTP_URLS=["http://192.168.3.8:5140/onebot"]
+ - NAPCAT_UID=${NAPCAT_UID}
+ - NAPCAT_GID=${NAPCAT_GID}
ports:
- 3000:3000
- 6099:6099
@@ -139,7 +149,7 @@ services:
image: mlikiowa/napcat-docker:latest
```
-使用 `docker-compose up -d` 运行到后台
+使用 `NAPCAT_UID=$(id -u); NAPCAT_GID=$(id -g); docker-compose up -d` 运行到后台
# 固化路径,方便下次直接快速登录
@@ -155,3 +165,7 @@ NapCat 配置文件路径: /app/napcat/config
```shell
docker logs napcat
```
+
+# Tips
+关于 NAPCAT_UID 与 NAPCAT_GID 环境变量
+[前往了解](https://containerization-automation.readthedocs.io/zh-cn/latest/docker/storage/[gosu]%E7%BB%91%E5%AE%9A%E6%8C%82%E8%BD%BD%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/)
diff --git a/base/Dockerfile b/base/Dockerfile
index 6f8b6fb..37da5d1 100644
--- a/base/Dockerfile
+++ b/base/Dockerfile
@@ -26,6 +26,7 @@ RUN apt-get update && apt-get install -y \
dbus-user-session \
curl \
jq \
+ gosu \
python3-pip \
tzdata && \
echo "${TZ}" > /etc/timezone && \
diff --git a/entrypoint.sh b/entrypoint.sh
index c9f2ea9..e17f917 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -51,6 +51,8 @@ if [ ! -f "$CONFIG_PATH" ]; then
: ${HTTP_HEART_ENABLE:='false'}
: ${MUSIC_SIGN_URL:=''}
: ${HTTP_SECRET:=''}
+ : ${NAPCAT_GID:=1001}
+ : ${NAPCAT_UID:=911}
HTTP_URLS=$(chech_quotes $HTTP_URLS)
WS_URLS=$(chech_quotes $WS_URLS)
cat < $CONFIG_PATH
@@ -91,8 +93,12 @@ EOF
fi
rm -rf "/tmp/.X1-lock"
-chmod -R 777 /app
-Xvfb :1 -screen 0 1080x760x16 +extension GLX +render > /dev/null 2>&1 &
+usermod -o -u ${NAPCAT_UID} napcat
+groupmod -o -g ${NAPCAT_GID} napcat
+usermod -g ${NAPCAT_GID} napcat
+chown -R ${NAPCAT_UID}:${NAPCAT_GID} /app
+
+gosu napcat Xvfb :1 -screen 0 1080x760x16 +extension GLX +render > /dev/null 2>&1 &
sleep 2
# 方便调试, 或许应该重定向到/dev/null?
python3 napcat.packet.production.py &
@@ -101,4 +107,4 @@ sleep 2
export FFMPEG_PATH=/usr/bin/ffmpeg
export DISPLAY=:1
cd /app/napcat
-/opt/QQ/qq --no-sandbox -q $ACCOUNT
+gosu napcat /opt/QQ/qq --no-sandbox -q $ACCOUNT