首页 > 其他分享 >【2022.10.25】尝试自写一个Dockerfile

【2022.10.25】尝试自写一个Dockerfile

时间:2022-10-26 08:45:53浏览次数:86  
标签:25 mcl Console 自写 -- config mirai 2022.10 yml

前言

用了别人这么多的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

相关文章

  • 10.25.2
    #include<stdio.h>#include<math.h> intmain(){/* inta,b; scanf("%*6d%4d%*8d%d",&a,&b); printf("%d",b-a);*/ doublea; scanf("%lf",&a); printf("%d,%.10g......
  • 2022-10-25学习内容_step01
    1.案例-找回密码-登录界面1.1activity_login_main.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/and......
  • 2022.10.25
    2022.10.25水群只有一次和无数次,呜呜呜呜呜。以后没有人@我,绝不去水群。该水还是要水的。关于我的电脑累了想休息一下这件事。吓傻了。哦!我上午干了什么?写贪心?写二分......
  • 想说的话2022/10/25
    今年遇到了许多不大不小的事情,考研、复试、调剂、尝试找工作、毕业、实习、上研究生......人生确实如梦,每件事情看似都重要,现在去想想又没有那么重要。​今年伊始我怀着......
  • [2022.10.25]常用类—String
    intlength():返回字符串的长度:returnvalue.LengthcharcharAt(intindex):返回某索引处的字符returnvalue[index]booleanisEmpty():判断是否是空字符串:returnvalue......
  • 建立自己的知行系统_01_20221025
    知行合一,事事才能顺遂。1.进行验证测试计划前,测试系统的架构和测试样品的状态需二次确认,避免发生接错(比如今天正负极接反导致模块短路就可以避免)或测试样品存在问题。2.......
  • 10.25
    #include<stdio.h>#definePI3.1415926intmain(){ /*doublea; scanf("%lf",&a); printf("%.2f",PI*a/180);*/ inta; floatb; scanf("%d",&a); if(a<=3) pri......
  • 闲话 22.10.25
    闲话今天又抱泠了(文件:sandalphon*.in/out;lambentlight*.in/out;excalibur*.in/outsoytony:这种nb文件名直接敲错我:这文件名显然是打不错的(然后T2光荣地打成了lamber......
  • PAT 乙级 1045 快速排序 (25分)
    1045快速排序(25分)著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边......
  • 【闲话】2022.10.25
    今天又是考试乐死出题人吸取了昨日教训把U,V分别换成了zuotiannihackwo,jintiannihailai乐死,他急了他急了赛后,Eafoo:#definejintianwohailaijintiannihailai双倍乐......