Commit 41af6c6f authored by nanahira's avatar nanahira

Merge branch 'novnc'

parents 54a2efbb aa4a635e
Pipeline #3073 failed with stages
in 5 minutes and 24 seconds
...@@ -5,11 +5,17 @@ stages: ...@@ -5,11 +5,17 @@ stages:
variables: variables:
GIT_DEPTH: "1" GIT_DEPTH: "1"
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
CONTAINER_TEST_IMAGE_LITE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-lite
CONTAINER_TEST_IMAGE_X: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-x CONTAINER_TEST_IMAGE_X: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-x
CONTAINER_TEST_IMAGE_NOVNC: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-novnc
CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest
CONTAINER_RELEASE_IMAGE_LITE: $CI_REGISTRY_IMAGE:lite
CONTAINER_RELEASE_IMAGE_X: $CI_REGISTRY_IMAGE:x CONTAINER_RELEASE_IMAGE_X: $CI_REGISTRY_IMAGE:x
CONTAINER_RELEASE_IMAGE_NOVNC: $CI_REGISTRY_IMAGE:novnc
DOCKERHUB_RELEASE_IMAGE: nanahira/mirai-cqhttp:latest DOCKERHUB_RELEASE_IMAGE: nanahira/mirai-cqhttp:latest
DOCKERHUB_RELEASE_IMAGE_LITE: nanahira/mirai-cqhttp:lite
DOCKERHUB_RELEASE_IMAGE_X: nanahira/mirai-cqhttp:x DOCKERHUB_RELEASE_IMAGE_X: nanahira/mirai-cqhttp:x
DOCKERHUB_RELEASE_IMAGE_NOVNC: nanahira/mirai-cqhttp:novnc
before_script: before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
...@@ -19,19 +25,23 @@ build: ...@@ -19,19 +25,23 @@ build:
tags: tags:
- docker - docker
script: script:
- docker build --pull --no-cache -t $CONTAINER_TEST_IMAGE . - docker build --pull --no-cache -t $CONTAINER_TEST_IMAGE_LITE .
- docker build -t $CONTAINER_TEST_IMAGE_X -f Dockerfile.x --build-arg BASE_IMAGE=$CONTAINER_TEST_IMAGE . - docker build -t $CONTAINER_TEST_IMAGE_X -f Dockerfile.x --build-arg BASE_IMAGE=$CONTAINER_TEST_IMAGE_LITE .
- docker push $CONTAINER_TEST_IMAGE - docker build -t $CONTAINER_TEST_IMAGE_NOVNC -f Dockerfile.xnovnc --build-arg BASE_IMAGE=$CONTAINER_TEST_IMAGE_X .
- docker tag $CONTAINER_TEST_IMAGE_NOVNC $CONTAINER_TEST_IMAGE
- docker push $CONTAINER_TEST_IMAGE_LITE
- docker push $CONTAINER_TEST_IMAGE_X - docker push $CONTAINER_TEST_IMAGE_X
- docker push $CONTAINER_TEST_IMAGE_NOVNC
- docker push $CONTAINER_TEST_IMAGE
deploy_latest: deploy_latest_lite:
stage: deploy stage: deploy
tags: tags:
- docker - docker
script: script:
- docker pull $CONTAINER_TEST_IMAGE - docker pull $CONTAINER_TEST_IMAGE_LITE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE - docker tag $CONTAINER_TEST_IMAGE_LITE $CONTAINER_RELEASE_IMAGE_LITE
- docker push $CONTAINER_RELEASE_IMAGE - docker push $CONTAINER_RELEASE_IMAGE_LITE
only: only:
- master - master
...@@ -46,51 +56,52 @@ deploy_latest_x: ...@@ -46,51 +56,52 @@ deploy_latest_x:
only: only:
- master - master
deploy_dockerhub_latest: deploy_latest_novnc:
stage: deploy stage: deploy
tags: tags:
- docker - docker
script: script:
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD - docker pull $CONTAINER_TEST_IMAGE_NOVNC
- docker pull $CONTAINER_TEST_IMAGE - docker tag $CONTAINER_TEST_IMAGE_NOVNC $CONTAINER_RELEASE_IMAGE_NOVNC
- docker tag $CONTAINER_TEST_IMAGE $DOCKERHUB_RELEASE_IMAGE - docker tag $CONTAINER_TEST_IMAGE_NOVNC $CONTAINER_RELEASE_IMAGE
- docker push $DOCKERHUB_RELEASE_IMAGE - docker push $CONTAINER_RELEASE_IMAGE_NOVNC
- docker push $CONTAINER_RELEASE_IMAGE
only: only:
- master - master
deploy_dockerhub_x: deploy_dockerhub_lite:
stage: deploy stage: deploy
tags: tags:
- docker - docker
script: script:
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD - docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
- docker pull $CONTAINER_TEST_IMAGE_X - docker pull $CONTAINER_TEST_IMAGE_LITE
- docker tag $CONTAINER_TEST_IMAGE_X $DOCKERHUB_RELEASE_IMAGE_X - docker tag $CONTAINER_TEST_IMAGE_LITE $DOCKERHUB_RELEASE_IMAGE_LITE
- docker push $DOCKERHUB_RELEASE_IMAGE_X - docker push $DOCKERHUB_RELEASE_IMAGE_LITE
only: only:
- master - master
deploy_tag: deploy_dockerhub_x:
stage: deploy stage: deploy
tags: tags:
- docker - docker
variables:
CONTAINER_TAG_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
script: script:
- docker pull $CONTAINER_TEST_IMAGE - docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_TAG_IMAGE - docker pull $CONTAINER_TEST_IMAGE_X
- docker push $CONTAINER_TAG_IMAGE - docker tag $CONTAINER_TEST_IMAGE_X $DOCKERHUB_RELEASE_IMAGE_X
- docker push $DOCKERHUB_RELEASE_IMAGE_X
only: only:
- tags - master
deploy_tag_x: deploy_dockerhub_novnc:
stage: deploy stage: deploy
tags: tags:
- docker - docker
variables:
CONTAINER_TAG_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG-x
script: script:
- docker pull $CONTAINER_TEST_IMAGE_X - docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
- docker tag $CONTAINER_TEST_IMAGE_X $CONTAINER_TAG_IMAGE - docker pull $CONTAINER_TEST_IMAGE_NOVNC
- docker push $CONTAINER_TAG_IMAGE - docker tag $CONTAINER_TEST_IMAGE_NOVNC $DOCKERHUB_RELEASE_IMAGE_NOVNC
- docker tag $CONTAINER_TEST_IMAGE_NOVNC $DOCKERHUB_RELEASE_IMAGE
- docker push $DOCKERHUB_RELEASE_IMAGE_NOVNC
- docker push $DOCKERHUB_RELEASE_IMAGE
only: only:
- tags - master
ARG BASE_IMAGE=git-registry.mycard.moe/nanahira/docker-mirai-cqhttp:x
FROM ${BASE_IMAGE}
RUN apt update && \
apt -y install python3 git x11vnc xvfb socat fluxbox npm && \
npm install -g pm2 && \
git clone --depth=1 https://github.com/kanaka/noVNC.git /usr/src/noVNC && \
git clone --depth=1 https://github.com/kanaka/websockify.git /usr/src/noVNC/utils/websockify \
&& sed -i -- "s/ps -p/ps -o pid | grep/g" /usr/src/noVNC/utils/launch.sh \
&& rm -rf /usr/src/noVNC/.git /usr/src/noVNC/utils/websockify/.git \
&& apt -y purge git \
&& apt -y autoremove && \
rm -rf /var/tmp/* /tmp/* /var/lib/apt/lists/*
ENV HOME=/root \
DEBIAN_FRONTEND=noninteractive \
LANG=en_US.UTF-8 \
LANGUAGE=en_US.UTF-8 \
LC_ALL=C.UTF-8 \
DISPLAY=:0.0 \
DISPLAY_WIDTH=500 \
DISPLAY_HEIGHT=900 \
VNC_PASS=nanahira
COPY ./pm2-novnc.json /usr/src/app/pm2-novnc.json
CMD ["pm2-docker", "/usr/src/app/pm2-novnc.json"]
ARG BASE_IMAGE=git-registry.mycard.moe/nanahira/docker-mirai-cqhttp:latest ARG BASE_IMAGE=git-registry.mycard.moe/nanahira/docker-mirai-cqhttp:lite
FROM ${BASE_IMAGE} FROM ${BASE_IMAGE}
RUN apt update && \ RUN apt update && \
......
...@@ -8,6 +8,30 @@ https://github.com/purerosefallen/docker-mirai-cqhttp ...@@ -8,6 +8,30 @@ https://github.com/purerosefallen/docker-mirai-cqhttp
## 建议 docker-compose ## 建议 docker-compose
### `novnc` 镜像
```yaml
version: '2.4'
services:
cqhttp:
restart: always
image: git-registry.mycard.moe/nanahira/docker-mirai-cqhttp:novnc
ports:
- '6700:6700'
volumes:
- ./data:/usr/src/app/data
- ./config:/usr/src/app/config
- ./bots:/usr/src/app/bots
environment:
QQ_ID: 11111111
QQ_PASS: change_me
WS_PORT: 6700
WS_TOKEN: change_me
VNC_PASS: change_me
```
### `x` 镜像
```yaml ```yaml
version: '2.4' version: '2.4'
services: services:
...@@ -30,7 +54,6 @@ services: ...@@ -30,7 +54,6 @@ services:
- ./config:/usr/src/app/config - ./config:/usr/src/app/config
- ./bots:/usr/src/app/bots - ./bots:/usr/src/app/bots
stdin_open: true stdin_open: true
command: java -jar mcl.jar
environment: environment:
DISPLAY: novnc:0.0 DISPLAY: novnc:0.0
QQ_ID: 11111111 QQ_ID: 11111111
...@@ -47,9 +70,13 @@ services: ...@@ -47,9 +70,13 @@ services:
## Tag ## Tag
* `latest` 无 GUI 镜像。需要有现成的 `devices.json` 文件。 * `lite` 无 GUI 镜像。需要有现成的 `devices.json` 文件。
* `x` 带 GUI 镜像,需要配合 noVNC 使用以拉滑块。
* `x` **推荐。** 带 GUI 镜像,需要配合 noVNC 使用以拉滑块。 * `novnc` 带 GUI 和 noVNC 镜像,可以直接拉滑块。noVNC 监听在 8080 端口。
* `latest``novnc`
## 环境变量 ## 环境变量
...@@ -61,6 +88,7 @@ ENV QQ_ID 11111111 ...@@ -61,6 +88,7 @@ ENV QQ_ID 11111111
ENV QQ_PASS qweqwe ENV QQ_PASS qweqwe
ENV WS_PORT 6700 ENV WS_PORT 6700
ENV WS_TOKEN qweqwe ENV WS_TOKEN qweqwe
ENV VNC_PASS nanahira
``` ```
### 说明 ### 说明
...@@ -74,3 +102,5 @@ ENV WS_TOKEN qweqwe ...@@ -74,3 +102,5 @@ ENV WS_TOKEN qweqwe
* `WS_PORT` Websocket 端口。 * `WS_PORT` Websocket 端口。
* `WS_TOKEN` Websocket 使用的密钥。 * `WS_TOKEN` Websocket 使用的密钥。
* `VNC_PASS` 仅限 `novnc` 镜像。noVNC 网页密码,默认 `nanahira`
{
"apps": [
{
"name": "x11",
"script": "bash",
"args": " -c 'Xvfb :0 -screen 0 ${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}x24'"
},
{
"name": "x11vnc",
"script": "bash",
"args": " -c '/usr/bin/x11vnc -passwd ${VNC_PASS}'"
},
{
"name": "novnc",
"script": "/usr/src/noVNC/utils/launch.sh",
"args": "--vnc localhost:5900 --listen 8080",
"interpreter": "bash"
},
{
"name": "socat",
"script": "socat",
"args": "tcp-listen:6000,reuseaddr,fork unix:/tmp/.X11-unix/X0"
},
{
"name": "fluxbox",
"script": "fluxbox"
},
{
"name": "mirai",
"script": "java",
"cwd": "/usr/src/app",
"args": "-jar ./mcl.jar"
}
]
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment