前置条件服务器Centos7 架构x86 安装docker、docker-compose# 安装 QEMU 和 binfmt_misc 支持 sudo yum install -y qemu-user-static # 注册 QEMU 到 Docker让 Docker 能构建跨平台镜像 sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes一、构建arm64镜像1、编写Dockerfile文件cd /root # 重新写入 cat Dockerfile EOF # 阶段1拉取 v0.2.1 源码 FROM alpine/git AS source ENV TZAsia/Shanghai WORKDIR /app RUN git clone https://github.com/phachon/mm-wiki.git \ cd mm-wiki \ git checkout v0.2.1 # 阶段2编译使用 Go 1.14与 v0.2.1 兼容 FROM golang:1.14-alpine AS builder COPY --fromsource /app/mm-wiki /app/mm-wiki WORKDIR /app/mm-wiki # 国内网络加速 RUN go env -w GO111MODULEon \ go env -w GOPROXYhttps://goproxy.cn,direct # 交叉编译参数 ARG TARGETOSlinux ARG TARGETARCHarm64 # 编译主程序 RUN CGO_ENABLED0 GOOS${TARGETOS} GOARCH${TARGETARCH} go build -o /opt/mm-wiki/mm-wiki ./ # 编译 install 程序 RUN cd install \ CGO_ENABLED0 GOOS${TARGETOS} GOARCH${TARGETARCH} go build -o /opt/mm-wiki/install/install ./ # 复制必要文件 RUN cp -r ./conf/ /opt/mm-wiki/ \ cp -r ./static/ /opt/mm-wiki/ \ cp -r ./views/ /opt/mm-wiki/ \ cp -r ./docs/ /opt/mm-wiki/ \ cp -r ./scripts/ /opt/mm-wiki/ 2/dev/null || true \ mkdir -p /opt/mm-wiki/logs /opt/mm-wiki/data /home/work # 阶段3运行环境 FROM alpine:latest ENV TZAsia/Shanghai WORKDIR /opt/mm-wiki RUN apk add --no-cache ca-certificates tzdata COPY --frombuilder /opt/mm-wiki/ /opt/mm-wiki/ # 确保可执行权限 创建必要的目录 RUN chmod x /opt/mm-wiki/mm-wiki \ chmod x /opt/mm-wiki/install/install 2/dev/null || true \ mkdir -p /opt/mm-wiki/data /opt/mm-wiki/logs /home/work EXPOSE 8080 8090 ENTRYPOINT [/opt/mm-wiki/mm-wiki] CMD [--conf, /opt/mm-wiki/conf/mm-wiki.conf] EOF2、构建arm64镜像# 构建arm64镜像 sudo docker buildx build \ --platform linux/arm64 \ -t mm-wiki:arm64-v021-fix \ -o typedocker,dest/root/mm-wiki-arm64-v021.tar \ .二、导入构建好的镜像docker load -i mm-wiki-arm64-v021.tar三、创建docker-compose配置文件需要的目录和文件# docker-compose【配置文件 version: 3.8 services: mysql: image: mysql:8.0 container_name: mm-wiki-mysql environment: MYSQL_ROOT_PASSWORD: mmwiki MYSQL_DATABASE: mmwiki MYSQL_USER: mmwiki MYSQL_PASSWORD: mmwiki TZ: Asia/Shanghai volumes: - mysql_data:/var/lib/mysql ports: - 3306:3306 restart: unless-stopped command: --default-authentication-pluginmysql_native_password networks: - mm-wiki-net healthcheck: test: [CMD, mysqladmin, ping, -h, localhost, -u, mmwiki, -pmmwiki] interval: 5s timeout: 5s retries: 10 start_period: 30s mm-wiki: image: mm-wiki:arm64-v021-fix container_name: mm-wiki ports: - 8080:8080 - 8090:8090 volumes: - ./data:/opt/mm-wiki/data - ./conf:/opt/mm-wiki/conf - ./logs:/opt/mm-wiki/logs - ./home-work:/home/work restart: unless-stopped environment: - TZAsia/Shanghai depends_on: mysql: condition: service_healthy networks: - mm-wiki-net entrypoint: [/bin/sh, -c] command: - | if [ ! -f /opt/mm-wiki/conf/mm-wiki.conf ]; then echo echo echo MM-Wiki install service starting on port 8090 echo Please access http://your-ip:8090 to complete setup echo echo cd /opt/mm-wiki/install ./install INSTALL_PID$$! while [ ! -f /opt/mm-wiki/conf/mm-wiki.conf ]; do sleep 3 if ! kill -0 $$INSTALL_PID 2/dev/null; then echo Install service exited, restarting... ./install INSTALL_PID$$! fi done echo Installation completed! kill $$INSTALL_PID 2/dev/null sleep 2 fi echo Starting MM-Wiki on port 8080... exec /opt/mm-wiki/mm-wiki --conf /opt/mm-wiki/conf/mm-wiki.conf volumes: mysql_data: networks: mm-wiki-net: driver: bridge# 目录结构 [root192 mm-wiki]# ls conf data docker-compose.yml home-work logs mysql_data [root192 mm-wiki]# ll data/ 总用量 0 [root192 mm-wiki]# [root192 mm-wiki]# ls conf data docker-compose.yml home-work logs mysql_data [root192 mm-wiki]# tree . ├── conf │ ├── default.conf │ ├── mm-wiki.conf │ ├── mm-wiki.conf_bak │ └── template.conf ├── data ├── docker-compose.yml ├── home-work │ ├── attachment │ ├── images │ ├── markdowns │ │ └── test │ │ ├── 111 │ │ │ ├── 222.md │ │ │ └── README.md │ │ └── README.md │ └── search-index ├── logs │ └── mm-wiki.log └── mysql_data 11 directories, 9 files # 创建目录 mkdir /root/mm-wiki{conf,data,home-work,logs,mysql_data} -p# 创建default.conf # MM-Wiki 配置文件 # ---------------------------------------------------------------------- # 由 MM-Wiki 安装向导配置生成 # beego 参数配置请参考https://beego.me/docs/mvc/controller/config.md # 安装说明 # ---------------------------------------------------------------------- # 在 install 目录执行安装向导程序 # ./install --port8090 # 浏览器访问 http://ip:8090 进入安装界面完成安装配置 # 运行说明 # ---------------------------------------------------------------------- # 无论是 Linux 或 Windows, MM-Wiki 启动的默认的配置文件为 conf/mm-wiki.conf # 若要从命令行运行服务器请在命令行运行 # ./mm-wiki 或指定文件运行 # ./mm-wiki --conf conf/mm-wiki.conf # # 后台运行 # ---------------------------------------------------------------------- # 如果你想关闭 shell 窗口后台运行 mm-wikiLinux 执行命令 # nohup ./mm-wiki --conf conf/mm-wiki.conf # 全局配置 # ---------------------------------------------------------------------- # 运行模式可选值为 prod(生产模式), dev(开发模式) 或者 test(测试模式). 默认是 prod, 为生产模式 runmode prod # 软件名称 appname mm-wiki # httpaddr mm-wiki 程序监听的 ip # 0.0.0.0 是对外开放通过服务域名、ip 可以访问的端口 # 127.0.0.1 只能对本机 localhost访问可以保护此端口安全性 httpaddr 0.0.0.0 # mm-wiki 程序监听的端口 httpport 8081 # session 配置 # ---------------------------------------------------------------------- # 开启 session sessionontrue # 客户端存储 cookie 的名字 sessionnamemmwikissid # session 的引擎默认是 file支持 file, memory, memcache, redis, redis_cluster sessionproviderfile # session 引擎的配置 # file: sessionproviderconfig.mmwiki.sessions 是指保存 session 数据文件的目录 # memory: sessionproviderconfig 为空 # memcache: sessionproviderconfig127.0.0.1:7080 memcache 服务的 ip:端口 # redis: sessionproviderconfig127.0.0.1:6379 redis 实例的 ip:端口 # redis_cluster: sessionproviderconfig127.0.0.1:6379;127.0.0.1:6380,100,test,0(addr..., pool size, password, dbnum) sessionproviderconfig.mmwiki.sessions # session 过期时间单位秒 sessiongcmaxlifetime72000 # cookie 配置 # ---------------------------------------------------------------------- [author] # 保存 cookie 的 passport passportmmwikipassport # cookie 的过期时间单位秒 cookie_expired72000 # mysql 数据库配置 # ---------------------------------------------------------------------- [db] host127.0.0.1 port3306 namemm_wiki userroot pass123456 table_prefixmw_ conn_max_idle30 conn_max_connection200 # 日志配置 # ---------------------------------------------------------------------- [log] console{level:7, color:true} file{level:7, filename:logs/mm-wiki.log} # 文档配置 # ---------------------------------------------------------------------- [document] # 文档的根目录最好写绝对路径 root_dir./data # 搜索配置 # ---------------------------------------------------------------------- [search] # 搜索索引更新间隔时间(单位秒)默认为 30如果文档数过多建议增加时长 interval_time30 # 每批次更新的文档数默认 100不能太大一次更新占用内存和链接数过多 batch_update_doc_num100# 创建template.conf # MM-Wiki 配置文件 # ---------------------------------------------------------------------- # 由 MM-Wiki 安装向导配置生成 # beego 参数配置请参考https://beego.me/docs/mvc/controller/config.md # 安装说明 # ---------------------------------------------------------------------- # 在 install 目录执行安装向导程序 # ./install --port8090 # 浏览器访问 http://ip:8090 进入安装界面完成安装配置 # 运行说明 # ---------------------------------------------------------------------- # 无论是 Linux 或 Windows, MM-Wiki 启动的默认的配置文件为 conf/mm-wiki.conf # 若要从命令行运行服务器请在命令行运行 # ./mm-wiki 或指定文件运行 # ./mm-wiki --conf conf/mm-wiki.conf # # 后台运行 # ---------------------------------------------------------------------- # 如果你想关闭 shell 窗口后台运行 mm-wikiLinux 执行命令 # nohup ./mm-wiki --conf conf/mm-wiki.conf # 全局配置 # ---------------------------------------------------------------------- # 运行模式可选值为 prod(生产模式), dev(开发模式) 或者 test(测试模式). 默认是 prod, 为生产模式 runmode prod # 软件名称 appname mm-wiki # httpaddr mm-wiki 程序监听的 ip # 0.0.0.0 是对外开放通过服务域名、ip 可以访问的端口 # 127.0.0.1 只能对本机 localhost访问可以保护此端口安全性 httpaddr #httpaddr# # mm-wiki 程序监听的端口 httpport #httpport# # session 配置 # ---------------------------------------------------------------------- # 开启 session sessionontrue # 客户端存储 cookie 的名字 sessionnamemmwikissid # session 的引擎默认是 file支持 file, memory, memcache, redis, redis_cluster sessionproviderfile # session 引擎的配置 # file: sessionproviderconfig.mmwiki.sessions 是指保存 session 数据文件的目录 # memory: sessionproviderconfig 为空 # memcache: sessionproviderconfig127.0.0.1:7080 memcache 服务的 ip:端口 # redis: sessionproviderconfig127.0.0.1:6379 redis 实例的 ip:端口 # redis_cluster: sessionproviderconfig127.0.0.1:6379;127.0.0.1:6380,100,test,0(addr..., pool size, password, dbnum) sessionproviderconfig.mmwiki.sessions # session 过期时间单位秒 sessiongcmaxlifetime72000 # cookie 配置 # ---------------------------------------------------------------------- [author] # 保存 cookie 的 passport passportmmwikipassport # cookie 的过期时间单位秒 cookie_expired72000 # mysql 数据库配置 # ---------------------------------------------------------------------- [db] host#db.host# port#db.port# name#db.name# user#db.user# pass#db.pass# table_prefixmw_ conn_max_idle#db.conn_max_idle# conn_max_connection#db.conn_max_connection# # 日志配置 # ---------------------------------------------------------------------- [log] console{level:7, color:true} file{level:7, filename:#log.filename#} # 文档配置 # ---------------------------------------------------------------------- [document] # 文档的根目录最好写绝对路径 root_dir#document_dir# # 搜索配置 # ---------------------------------------------------------------------- [search] # 搜索索引更新间隔时间(单位秒)默认为 30如果文档数过多建议增加时长 interval_time30 # 每批次更新的文档数默认 100不能太大一次更新占用内存和链接数过多 batch_update_doc_num100四、运行mm-wikidocker-compose up -d
网站建设
高端定制
企业官网