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