前言
用了别人这么多的docker,因为mirai的旧版本登不上了这次要自写一个docker了
因为mirai运行在openjdk环境下运行,所以首先最开始的内容便是
FROM openjdk:17-slim-buster
这里的slim-buster指的是在debian镜像基础下的openjdk环境
如果不使用这个tag的话,那么就无法使用apt安装东西
FROM openjdk:17-slim-buster
WORKDIR /home/mirai
因为前台没有程序持续运行的话,docker会直接关掉,所以加上一句
FROM openjdk:17-slim-buster
WORKDIR /home/mirai
ENTRYPOINT tail -f /dev/null
tail可以帮我们持续运行,等在容器内调试好了后再讲这句话删掉
安装脚本文件时回答问题
因为openjdk:17-slim-buster里面没有wget,那么就需要我们在这个时候安装
比如我想使用apt install wget命令时候输入y确认安装,那么有两种方法
第一种
apt install -y wget
第二种
RUN sh -c '/bin/echo -e "y" | apt install -y wget'
那么我们就可以在Dockerfile里面这么写
FROM openjdk:17-slim-buster
WORKDIR /home/mirai
RUN apt update
RUN sh -c '/bin/echo -e "y" | apt install -y wget'#这里的-e指的是开启转义,那么\n就是回车
ENTRYPOINT tail -f /dev/null
apt update这一步挺花时间的,所以先和其他命令分开
将Dockerfile先build后run再exec
进入容器后用wget命令即可检查到wget存在
调试
在容器内我输入了以下命令
apt update
apt install wget nano
wget https://github.com/iTXTech/mcl-installer/releases/download/a02f711/mcl-installer-a02f711-linux-amd64
chmod +x mcl-installer-a02f711-linux-amd64
./mcl-installer-a02f711-linux-amd64#(这里输入了六个回车\n\n\n\n\n\n)
java -jar mcl.jar#(这里输入了exit\n)
./mcl --update-package net.mamoe:mirai-console-terminal --channel maven-prerelease
./mcl --update-package net.mamoe:mirai-core-all --channel maven-prerelease
./mcl --update-package net.mamoe:mirai-console --channel maven-prerelease
./mcl -u
sed 's/123456/'${QQ_ID}'/' config/Console/AutoLogin.yml > config/Console/A.yml
sed 's/pwd/'${QQ_PASS}'/' config/Console/A.yml > config/Console/B.yml
sed 's/protocol: ANDROID_PHONE/protocol: ANDROID_PAD' config/Console/B.yml > config/Console/AutoLogin.yml
rm -f config/Console/A.yml
rm -f config/Console/B.yml
最终Dockerfile文档
FROM openjdk:17-slim-buster
WORKDIR /home/mirai
ENV QQ_ID 账号
ENV QQ_PASS 密码
ENV WS_PORT 6700
ENV WS_TOKEN 1234567890
# 复制网页内下载链接:https://github.com/iTXTech/mcl-installer/releases/
ENV DOWNLOAD https://github.com/iTXTech/mcl-installer/releases/download/a02f711/mcl-installer-a02f711-linux-amd64
#安装wget和nano
RUN apt update
RUN sh -c '/bin/echo -e "y" | apt install wget nano'
# 下载mcl-installer
RUN wget -O mcl-install ${DOWNLOAD} && \
chmod +x mcl-install && \
sh -c '/bin/echo -e "\n\n\n\n\n\n" | ./mcl-install' && \
rm -f mcl-install
# 下载
RUN sh -c '/bin/echo -e "exit\n" | java -jar mcl.jar'
#更新源,来自https://github.com/mamoe/mirai/issues/2298
RUN ./mcl --update-package net.mamoe:mirai-console-terminal --channel maven-prerelease && \
./mcl --update-package net.mamoe:mirai-core-all --channel maven-prerelease && \
./mcl --update-package net.mamoe:mirai-console --channel maven-prerelease
RUN sh -c '/bin/echo -e "exit\n" | ./mcl -u'
# 这里是把全局变量修改为你自己的
RUN sed 's/123456/'${QQ_ID}'/' config/Console/AutoLogin.yml > config/Console/A.yml && \
sed 's/pwd/'${QQ_PASS}'/' config/Console/A.yml > config/Console/B.yml && \
sed 's/protocol: ANDROID_PHONE/protocol: ANDROID_PAD' config/Console/B.yml > config/Console/AutoLogin.yml && \
rm -f config/Console/A.yml && \
rm -f config/Console/B.yml
ENTRYPOINT tail -f /dev/null
参考链接
docker 仓库里面python好多tag都代表什么意思?我们该如何选择_51CTO博客_docker tag 详解
Dockerfile中如何自动回答标准输入的问题 - 走看看 (zoukankan.com)
docker run 如何让容器启动后不会自动停止 (jerrymei.cn)
标签:25,mcl,Console,自写,--,config,mirai,2022.10,yml From: https://www.cnblogs.com/mokou/p/16827061.html