在了解到docker这个东西后就一直想找找有没有mirai的镜像,找了一段时间,发现都是很久以前的项目了,索性就照着文档自己创建了mirai的镜像。

开始先创建一个Dockerfile用来构建文件,代码如下

# 使用openjdk18作为基础镜像
FROM openjdk:18-jdk-alpine3.14


#设置环境变量
ENV LANG=zh_CN.UTF-8 \
    SHELL=/bin/bash \
    PS1="\u@\h:\w \$ " \
    MIRAI_DIR=/mirai \
    MCL_VERSION=2.1.0 \
    MCL_URL=https://github.com/iTXTech/mirai-console-loader/releases/download/v2.1.0/mcl-2.1.0.zip 


# 复制启动脚本到镜像
COPY ./init /usr/bin

#设置工作路径
WORKDIR ${MIRAI_DIR}

#设置时区,换源,下载mcl启动器
RUN set -x \
    && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
    && apk update -f \
    && apk upgrade \
    && apk --no-cache add -f bash \
                             coreutils \
                             moreutils \
                             git \
                             curl \
                             wget \
                             unzip \
                             tzdata \
    && rm -rf /var/cache/apk/* \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && wget -P "/tmp"  ${MCL_URL}
    

#运行init脚本
ENTRYPOINT ["bash", "/usr/bin/init"]

然后在 Dockerfile 同目录下创建init脚本

#!/bin/sh

if [ "`ls -A ${MIRAI_DIR}`" = "" ]; then
    echo "-------第一次启动容器,正在初始化---------"
    unzip /tmp/mcl-${MCL_VERSION}.zip -d /mirai
    cd /mirai
    chmod +x mcl
    ./mcl --update-package org.itxtech:mcl-addon
    ./mcl --update-package org.itxtech:soyuz
    ./mcl --update-package net.mamoe:chat-command --channel stable --type plugin
    ./mcl --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin
    echo "-------初始化完成,启动miriai---------"
    ./mcl
else 
  echo "-------启动miriai---------"
  cd ${MIRAI_DIR}&&./mcl
fi

最后后在Dockerfile同目录下构建镜像

docker build -t mirai:latest --rm .

然后用构建好的镜像测试

docker run -itd —-nema mirai \
-v “$(pwd)”/mirai:/mirai \
—-restart alawys mirai:latest