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:
variables:
GIT_DEPTH: "1"
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_NOVNC: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-novnc
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_NOVNC: $CI_REGISTRY_IMAGE:novnc
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_NOVNC: nanahira/mirai-cqhttp:novnc
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
......@@ -19,19 +25,23 @@ build:
tags:
- docker
script:
- docker build --pull --no-cache -t $CONTAINER_TEST_IMAGE .
- docker build -t $CONTAINER_TEST_IMAGE_X -f Dockerfile.x --build-arg BASE_IMAGE=$CONTAINER_TEST_IMAGE .
- docker push $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_LITE .
- 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_NOVNC
- docker push $CONTAINER_TEST_IMAGE
deploy_latest:
deploy_latest_lite:
stage: deploy
tags:
- docker
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE
- docker pull $CONTAINER_TEST_IMAGE_LITE
- docker tag $CONTAINER_TEST_IMAGE_LITE $CONTAINER_RELEASE_IMAGE_LITE
- docker push $CONTAINER_RELEASE_IMAGE_LITE
only:
- master
......@@ -46,51 +56,52 @@ deploy_latest_x:
only:
- master
deploy_dockerhub_latest:
deploy_latest_novnc:
stage: deploy
tags:
- docker
script:
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $DOCKERHUB_RELEASE_IMAGE
- docker push $DOCKERHUB_RELEASE_IMAGE
- docker pull $CONTAINER_TEST_IMAGE_NOVNC
- docker tag $CONTAINER_TEST_IMAGE_NOVNC $CONTAINER_RELEASE_IMAGE_NOVNC
- docker tag $CONTAINER_TEST_IMAGE_NOVNC $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE_NOVNC
- docker push $CONTAINER_RELEASE_IMAGE
only:
- master
deploy_dockerhub_x:
deploy_dockerhub_lite:
stage: deploy
tags:
- docker
script:
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
- docker pull $CONTAINER_TEST_IMAGE_X
- docker tag $CONTAINER_TEST_IMAGE_X $DOCKERHUB_RELEASE_IMAGE_X
- docker push $DOCKERHUB_RELEASE_IMAGE_X
- docker pull $CONTAINER_TEST_IMAGE_LITE
- docker tag $CONTAINER_TEST_IMAGE_LITE $DOCKERHUB_RELEASE_IMAGE_LITE
- docker push $DOCKERHUB_RELEASE_IMAGE_LITE
only:
- master
deploy_tag:
deploy_dockerhub_x:
stage: deploy
tags:
- docker
variables:
CONTAINER_TAG_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_TAG_IMAGE
- docker push $CONTAINER_TAG_IMAGE
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
- docker pull $CONTAINER_TEST_IMAGE_X
- docker tag $CONTAINER_TEST_IMAGE_X $DOCKERHUB_RELEASE_IMAGE_X
- docker push $DOCKERHUB_RELEASE_IMAGE_X
only:
- tags
deploy_tag_x:
- master
deploy_dockerhub_novnc:
stage: deploy
tags:
- docker
variables:
CONTAINER_TAG_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG-x
script:
- docker pull $CONTAINER_TEST_IMAGE_X
- docker tag $CONTAINER_TEST_IMAGE_X $CONTAINER_TAG_IMAGE
- docker push $CONTAINER_TAG_IMAGE
- docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD
- docker pull $CONTAINER_TEST_IMAGE_NOVNC
- 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:
- 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}
RUN apt update && \
......
......@@ -8,6 +8,30 @@ https://github.com/purerosefallen/docker-mirai-cqhttp
## 建议 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
version: '2.4'
services:
......@@ -30,7 +54,6 @@ services:
- ./config:/usr/src/app/config
- ./bots:/usr/src/app/bots
stdin_open: true
command: java -jar mcl.jar
environment:
DISPLAY: novnc:0.0
QQ_ID: 11111111
......@@ -47,9 +70,13 @@ services:
## 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
ENV QQ_PASS qweqwe
ENV WS_PORT 6700
ENV WS_TOKEN qweqwe
ENV VNC_PASS nanahira
```
### 说明
......@@ -74,3 +102,5 @@ ENV WS_TOKEN qweqwe
* `WS_PORT` 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