docker compose离线部署mailcow邮件系统

前言

本文主要讲述因为网络环境限制(比如内网、开发环境等),无法直接下载docker镜像的情况下,如何部署mailcow。

正常环境下部署mailcow,请参考文章:mailcow基于容器化的开源邮件系统详细安装过程

准备工作

  • 新环境docker版本满足mailcow要求,并且已经正常启动。
  • 旧环境已经安装mailcow,相关的镜像文件完整。
  • 本文描述的部署过程所涉及的镜像版本与mailcow基于容器化的开源邮件系统详细安装过程 一致。

部署过程

镜像文件导出

在已经安装好mailcow环境查看mailcow项目涉及的镜像列表及版本信息:

[root@mail ~]# docker images
REPOSITORY          TAG               IMAGE ID       CREATED        SIZE
memcached           alpine            936dbfa3fd1a   11 days ago    15.7MB
mailcow/phpfpm      1.88              f9d025710983   12 days ago    301MB
mailcow/dovecot     1.30              2aca708281e0   12 days ago    251MB
mailcow/solr        1.8.3             a77fb6cd923e   12 days ago    454MB
mailcow/postfix     1.75              d13755c00185   13 days ago    335MB
mailcow/dockerapi   2.08              adc1446be9a4   2 weeks ago    166MB
mailcow/olefy       1.13              6572de3dccbb   2 weeks ago    112MB
mailcow/watchdog    2.03              c801c70f93a6   2 weeks ago    117MB
mailcow/acme        1.88              a97424882d9c   2 weeks ago    146MB
mailcow/netfilter   1.59              59b514e53b6d   2 weeks ago    110MB
mailcow/rspamd      1.96              f3ddc7d4a34a   2 weeks ago    184MB
nginx               mainline-alpine   099a2d701db1   2 weeks ago    43.2MB
mariadb             10.5              8d27db214bfa   4 weeks ago    394MB
mailcow/clamd       1.66              5b6dfc3668d8   4 weeks ago    78.8MB
mailcow/unbound     1.22              8ccf6655d8aa   4 weeks ago    27.7MB
mcuadros/ofelia     latest            05600fa3b007   6 weeks ago    23MB
redis               7-alpine          38a44d796822   6 weeks ago    40.7MB
mailcow/sogo        1.123             f41cfca2cd8b   4 months ago   336MB
robbertkl/ipv6nat   latest            b789d3355d66   2 years ago    18MB

导出镜像列表信息,保存到images.txt文件:

[root@mail ~]# docker images >images.txt

制作导出镜像文件的脚本docker-save.sh:

[root@mail ~]# cat images.txt|awk 'BEGIN{print "#!/bin/bash"} $1 != "REPOSITORY" {print "docker save "$3">"$3".tar"}' >docker-save.sh

docker-save.sh内容如下:

[root@localhost backup]# cat docker-save.sh 
#!/bin/bash
docker save 936dbfa3fd1a>936dbfa3fd1a.tar
docker save f9d025710983>f9d025710983.tar
docker save 2aca708281e0>2aca708281e0.tar
docker save a77fb6cd923e>a77fb6cd923e.tar
docker save d13755c00185>d13755c00185.tar
docker save adc1446be9a4>adc1446be9a4.tar
docker save 6572de3dccbb>6572de3dccbb.tar
docker save c801c70f93a6>c801c70f93a6.tar
docker save a97424882d9c>a97424882d9c.tar
docker save 59b514e53b6d>59b514e53b6d.tar
docker save f3ddc7d4a34a>f3ddc7d4a34a.tar
docker save 099a2d701db1>099a2d701db1.tar
docker save 8d27db214bfa>8d27db214bfa.tar
docker save 5b6dfc3668d8>5b6dfc3668d8.tar
docker save 8ccf6655d8aa>8ccf6655d8aa.tar
docker save 05600fa3b007>05600fa3b007.tar
docker save 38a44d796822>38a44d796822.tar
docker save f41cfca2cd8b>f41cfca2cd8b.tar
docker save b789d3355d66>b789d3355d66.tar

执行脚本,导出镜像文件保存到backup目录:

[root@mail backup]# sh docker-save.sh

导出的镜像列表如下:

[root@mail backup]# ll *.tar
-rw-r--r-- 1 root root  23987200  7月 10 14:23 05600fa3b007.tar
-rw-r--r-- 1 root root  45078528  7月 10 14:23 099a2d701db1.tar
-rw-r--r-- 1 root root 256755712  7月 10 14:22 2aca708281e0.tar
-rw-r--r-- 1 root root  41546752  7月 10 14:23 38a44d796822.tar
-rw-r--r-- 1 root root 115342336  7月 10 14:23 59b514e53b6d.tar
-rw-r--r-- 1 root root  79546880  7月 10 14:23 5b6dfc3668d8.tar
-rw-r--r-- 1 root root 115288064  7月 10 14:22 6572de3dccbb.tar
-rw-r--r-- 1 root root  28832768  7月 10 14:23 8ccf6655d8aa.tar
-rw-r--r-- 1 root root 400542720  7月 10 14:23 8d27db214bfa.tar
-rw-r--r-- 1 root root  16091648  7月 10 14:22 936dbfa3fd1a.tar
-rw-r--r-- 1 root root 460867584  7月 10 14:22 a77fb6cd923e.tar
-rw-r--r-- 1 root root 149100032  7月 10 14:23 a97424882d9c.tar
-rw-r--r-- 1 root root 171997184  7月 10 14:22 adc1446be9a4.tar
-rw-r--r-- 1 root root  18381824  7月 10 14:23 b789d3355d66.tar
-rw-r--r-- 1 root root 120186368  7月 10 14:23 c801c70f93a6.tar
-rw-r--r-- 1 root root 342357504  7月 10 14:22 d13755c00185.tar
-rw-r--r-- 1 root root 189327360  7月 10 14:23 f3ddc7d4a34a.tar
-rw-r--r-- 1 root root 345827328  7月 10 14:23 f41cfca2cd8b.tar
-rw-r--r-- 1 root root 306612224  7月 10 14:22 f9d025710983.tar

镜像和配置迁移

将导出的镜像文件、images.txt、mailcow-dockerized目录(该目录包含docker-compose.yml)拷贝到新服务器。

镜像导入并修改标签版本

根据导出的images.txt文件制作镜像导入和修改标签脚本docker-load.sh,命令如下:

[root@mail backup]# cat images.txt|awk 'BEGIN{print "#!/bin/bash"} $1 != "REPOSITORY" {print "docker load < "$3".tar"; print "docker tag "$3" "$1":"$2}' >docker-load.sh

docker-load.sh脚本内容如下:

#!/bin/bash
docker load < 936dbfa3fd1a.tar
docker tag 936dbfa3fd1a memcached:alpine
docker load < f9d025710983.tar
docker tag f9d025710983 mailcow/phpfpm:1.88
docker load < 2aca708281e0.tar
docker tag 2aca708281e0 mailcow/dovecot:1.30
docker load < a77fb6cd923e.tar
docker tag a77fb6cd923e mailcow/solr:1.8.3
docker load < d13755c00185.tar
docker tag d13755c00185 mailcow/postfix:1.75
docker load < adc1446be9a4.tar
docker tag adc1446be9a4 mailcow/dockerapi:2.08
docker load < 6572de3dccbb.tar
docker tag 6572de3dccbb mailcow/olefy:1.13
docker load < c801c70f93a6.tar
docker tag c801c70f93a6 mailcow/watchdog:2.03
docker load < a97424882d9c.tar
docker tag a97424882d9c mailcow/acme:1.88
docker load < 59b514e53b6d.tar
docker tag 59b514e53b6d mailcow/netfilter:1.59
docker load < f3ddc7d4a34a.tar
docker tag f3ddc7d4a34a mailcow/rspamd:1.96
docker load < 099a2d701db1.tar
docker tag 099a2d701db1 nginx:mainline-alpine
docker load < 8d27db214bfa.tar
docker tag 8d27db214bfa mariadb:10.5
docker load < 5b6dfc3668d8.tar
docker tag 5b6dfc3668d8 mailcow/clamd:1.66
docker load < 8ccf6655d8aa.tar
docker tag 8ccf6655d8aa mailcow/unbound:1.22
docker load < 05600fa3b007.tar
docker tag 05600fa3b007 mcuadros/ofelia:latest
docker load < 38a44d796822.tar
docker tag 38a44d796822 redis:7-alpine
docker load < f41cfca2cd8b.tar
docker tag f41cfca2cd8b mailcow/sogo:1.123
docker load < b789d3355d66.tar
docker tag b789d3355d66 robbertkl/ipv6nat:latest

执行docker-load.sh脚本,进行镜像导入并修改标签:

[root@localhost backup]# sh docker-load.sh 
94e5f06ff8e3: Loading layer [==================================================>]  8.083MB/8.083MB
8c41234f262b: Loading layer [==================================================>]  10.75kB/10.75kB
17358f769c7c: Loading layer [==================================================>]  285.2kB/285.2kB
c1416d4bd1aa: Loading layer [==================================================>]  7.684MB/7.684MB
....

导入完成后,查看镜像列表如下:

[root@localhost backup]# docker images 
REPOSITORY          TAG               IMAGE ID       CREATED        SIZE
memcached           alpine            936dbfa3fd1a   11 days ago    15.7MB
mailcow/phpfpm      1.88              f9d025710983   12 days ago    301MB
mailcow/dovecot     1.30              2aca708281e0   12 days ago    251MB
mailcow/solr        1.8.3             a77fb6cd923e   12 days ago    454MB
mailcow/postfix     1.75              d13755c00185   13 days ago    335MB
mailcow/dockerapi   2.08              adc1446be9a4   2 weeks ago    166MB
mailcow/olefy       1.13              6572de3dccbb   2 weeks ago    112MB
mailcow/watchdog    2.03              c801c70f93a6   2 weeks ago    117MB
mailcow/acme        1.88              a97424882d9c   2 weeks ago    146MB
mailcow/netfilter   1.59              59b514e53b6d   2 weeks ago    110MB
mailcow/rspamd      1.96              f3ddc7d4a34a   2 weeks ago    184MB
nginx               mainline-alpine   099a2d701db1   2 weeks ago    43.2MB
mariadb             10.5              8d27db214bfa   4 weeks ago    394MB
mailcow/clamd       1.66              5b6dfc3668d8   4 weeks ago    78.8MB
mailcow/unbound     1.22              8ccf6655d8aa   4 weeks ago    27.7MB
mcuadros/ofelia     latest            05600fa3b007   6 weeks ago    23MB
redis               7-alpine          38a44d796822   6 weeks ago    40.7MB
mailcow/sogo        1.123             f41cfca2cd8b   4 months ago   336MB
robbertkl/ipv6nat   latest            b789d3355d66   2 years ago    18MB

启动容器

通过如下命令启动容器:

[root@localhost ~]# cd mailcow-dockerized
[root@localhost mailcow-dockerized]# docker compose up -d

如果一切顺利,至此即完成mailcow部署。

但是,如果是一个纯内网环境,大概率会遇到dependency failed to start: container mailcowdockerized-unbound-mailcow-1 is unhealthy 问题:

[root@localhost mailcow-dockerized]# docker compose up -d
[+] Running 20/20✔ Network mailcowdockerized_mailcow-network        Created                                                                                                    0.4s ✔ Container mailcowdockerized-netfilter-mailcow-1  Started                                                                                                    0.3s ✔ Container mailcowdockerized-dockerapi-mailcow-1  Started                                                                                                    0.9s ✔ Container mailcowdockerized-memcached-mailcow-1  Started                                                                                                    0.7s ✔ Container mailcowdockerized-olefy-mailcow-1      Started                                                                                                    0.7s ✔ Container mailcowdockerized-sogo-mailcow-1       Started                                                                                                    0.8s ✘ Container mailcowdockerized-unbound-mailcow-1    Error                                                                                                    135.1s ✔ Container mailcowdockerized-redis-mailcow-1      Started                                                                                                    0.9s ✔ Container mailcowdockerized-solr-mailcow-1       Started                                                                                                    0.9s ✔ Container mailcowdockerized-mysql-mailcow-1      Started                                                                                                    1.0s ✔ Container mailcowdockerized-clamd-mailcow-1      Created                                                                                                    0.0s ✔ Container mailcowdockerized-php-fpm-mailcow-1    Started                                                                                                    1.2s ✔ Container mailcowdockerized-dovecot-mailcow-1    Started                                                                                                    1.7s ✔ Container mailcowdockerized-postfix-mailcow-1    Created                                                                                                    0.0s ✔ Container mailcowdockerized-nginx-mailcow-1      Started                                                                                                    1.6s ✔ Container mailcowdockerized-ofelia-mailcow-1     Started                                                                                                    2.0s ✔ Container mailcowdockerized-rspamd-mailcow-1     Started                                                                                                    2.0s ✔ Container mailcowdockerized-acme-mailcow-1       Created                                                                                                    0.0s ✔ Container mailcowdockerized-watchdog-mailcow-1   Created                                                                                                    0.0s ✔ Container mailcowdockerized-ipv6nat-mailcow-1    Created                                                                                                    0.0s 
dependency failed to start: container mailcowdockerized-unbound-mailcow-1 is unhealthy

这是由于mailcow/unbound启动了健康检查,健康检查的逻辑是检查“1.1.1.1” “8.8.8.8” “9.9.9.9”三个dns做ping情况,并且通过本机的dns检查”mailcow.email” “github.com” “hub.docker.com”这三个域名的解析情况,如果检查不通过这个容器状态就是unhealthy。

可以通过修改mailcow.conf中SKIP_UNBOUND_HEALTHCHECK=n的健康检查参数跳过健康检查:

SKIP_UNBOUND_HEALTHCHECK=y

或者进入该容器,修改检查脚本healthcheck.sh:

[root@localhost mailcow-dockerized]# docker ps | grep unbound
08b379f97337   mailcow/unbound:1.22     "/docker-entrypoint.…"   54 minutes ago   Up 54 minutes (healthy)   53/tcp, 53/udp                                                                                                                                                                                                                      mailcowdockerized-unbound-mailcow-1
[root@localhost mailcow-dockerized]# docker exec -it 08b379f97337 /bin/bash

将脚本中 exit 1全部修改为 exit 0,然后手动执行该脚本,等待容器状态变为healthy状态,进行执行docker compose up -d 启动命令即可。

参考来源:docker compose离线部署mailcow | MailABC邮件知识百科

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBuilderX打包流程(H5)?HBuilder如何发布前端H5应用?前端开发怎样打包发布uniapp项目为h5?

打包步骤&#xff1a; 1、打开hbuilder x》发行》网站-PC Web或手机H5(仅适用于uni-app)(H) 2、面板里的所有信息都可以不填&#xff0c;也不用勾选》直接点击【发行】即可 3、打包成功&#xff1a; 4、部署 按照打包后的路径&#xff0c;找到打包好的文件夹&#xff0c;把文…

【5G Sub-6GHz模块】专为IoT/eMBB应用而设计的RG520NNA、RG520FEB、RG530FNA、RG500LEU 5G模组

推出全新的5G系列模组&#xff1a; RG520NNADB-M28-SGASA RG520NNADA-M20-SGASA RG520FEBDE-M28-TA0AA RG530FNAEA-M28-SGASA RG530FNAEA-M28-TA0AA RG500LEUAA-M28-TA0AA ——明佳达 1、5G RG520N 系列——专为IoT/eMBB应用而设计的LGA封装模块 RG520N 系列是一款专为 IoT…

使用 ABBYY FineReader PDF 15 在创建或转换 PDF 时自动生成书签

使用 ABBYY 为 PDF 文件添加书签&#xff0c;可以帮助快速定位文档中的主要内容&#xff0c;也能更方便的梳理出一份文档大纲。 有很多 PDF 文件在创建时并没有编辑书签&#xff0c;这里介绍使用 ABBYY FineReader PDF 15&#xff08;Win 系统&#xff09;在 PDF 中自动添加书…

知识分享:网贷大数据查询会影响个人征信吗?

随着人们对传统征信的认识不断加深和对个人征信的重视&#xff0c;部分网友就有一种疑问&#xff0c;那就是关于网贷大数据查询对征信有没有影响的问题&#xff0c;小易大数据小编就用本文就为大家详细讲解一下&#xff0c;希望对你了解网贷大数据有帮助。 首先网贷大数据与征信…

睿考网:2024注册会计师考试考试在即,如何备考?

2024年注册会计师考试即将开始&#xff0c;准考证打印时间安排在8月5日至20日&#xff0c;每天上午8点至晚上8点&#xff0c;考生要确保在规定时间内完成准考证的打印。 注册会计师考试包含六个科目&#xff0c;每个科目都有其独特的特点和难度。考生需要根据各科目的特性采用…

Win11鼠标卡顿 - 解决方案

问题 使用Win11系统使&#xff0c;鼠标点击任务栏的控制中心&#xff08;如下图&#xff09;时&#xff0c;鼠标会有3秒左右的卡顿&#xff0c;同时整个显示屏幕也有一定程度的卡顿。 问题原因 排除鼠标问题&#xff1a;更换过不同类型的鼠标&#xff0c;以及不同的连接方式…

反悔贪心和例题

反悔贪心 什么是反悔贪心&#xff1a; 我们都知道贪心就是把局部最优解作为整体最优解&#xff0c;然后一步步的迭代&#xff0c;直到找到全局最优解的过程。但是有些时候&#xff0c;贪心策略可能并不是正解&#xff0c;局部的最优解可能不是全局的最优解。反悔贪心顾名思义…

SSM架构(二)

接上一篇博客 SSM框架(一)-CSDN博客 2.4 Spring 2.4.1 Service设计 EmployeeService接口代码&#xff1a; List<Emp> search(Emp condition);Emp searchById(Integer id);boolean add(Emp emp);boolean update(Emp emp);boolean delete(Integer id); EmployeeServic…

聊聊不再兼容安卓的鸿蒙

鸿蒙NExt已经确定不再兼容安卓系统&#xff0c;这意味着鸿蒙系统在更新迭代上将会展现出更加迅猛的速度。不过&#xff0c;这样的变化也给开发者们带来了不小的挑战。如今&#xff0c;鸿蒙的开发主要推荐使用的是ArkTS&#xff0c;而不是我们熟悉的Java SDK。对于大量习惯于使用…

【C++刷题】[UVA 489]Hangman Judge 刽子手游戏

题目描述 题目解析 这一题看似简单其实有很多坑&#xff0c;我也被卡了好久才ac。首先题目的意思是&#xff0c;输入回合数&#xff0c;一个答案单词&#xff0c;和一个猜测单词&#xff0c;如果猜测的单词里存在答案单词里的所有字母则判定为赢&#xff0c;如果有一个字母是答…

Unity3d开发google chrome的dinosaur游戏

游戏效果 游戏中&#xff1a; 游戏中止&#xff1a; 一、制作参考 如何制作游戏&#xff1f;【15分钟】教会你制作Unity小恐龙游戏&#xff01;新手15分钟内马上学会&#xff01;_ unity教学 _ 制作游戏 _ 游戏开发_哔哩哔哩_bilibili 二、图片资源 https://download.csdn.…

9.Kafka消费者API实践

目录 概述实践topic消费者效果 消费指定topic的某个分区代码效果kafka分区策略-Range 概述 Kafka消费者API实践 实践 topic # ./kafka-topics.sh --bootstrap-server localhost:9092 --create --partitions 3 --replication-factor 1 --topic test03 [roothadoop02 bin]# ./…

【问题解决】Jetson nano 安装pytorch使用GPU推理

一. 问题描述 安装 yolov8 后只调用cpu推理图片 二. 解决步骤 2.1 在推理环境下&#xff0c;执行下面命令卸载pytorch pip uninstall torch torchtext torchaudio2.2 下载PyTorch的依赖: sudo apt-get -y update; sudo apt-get -y install libopenblas-dev;###2.3 下载py…

深入全面概括C语言的运算符

目录 二.算术运算符 三.自增自减运算符 四.赋值运算符 五.关系运算符 六.逻辑运算符 七.三元运算符 九.运算符的优先级 一.前言 c语言的运算符可以分为六种&#xff0c;分别是&#xff1a;1.算术运算符&#xff1b;2.自增自减运算符&#xff1b;3.赋值运算符&#xff1b…

uniapp转小程序,小程序转uniapp方法

&#x1f935; 作者&#xff1a;coderYYY &#x1f9d1; 个人简介&#xff1a;前端程序媛&#xff0c;目前主攻web前端&#xff0c;后端辅助&#xff0c;其他技术知识也会偶尔分享&#x1f340;欢迎和我一起交流&#xff01;&#x1f680;&#xff08;评论和私信一般会回&#…

python-字符金字塔(赛氪OJ)

[题目描述] 请打印输出一个字符金字塔&#xff0c;字符金字塔的特征请参考样例。输入格式&#xff1a; 输入一个字母&#xff0c;保证是大写。输出格式&#xff1a; 输出一个字母金字塔&#xff0c;输出样式见样例。样例输入 C样例输出 A ABA …

【ffmpeg命令基础】过滤处理

文章目录 前言过滤处理的介绍两种过滤类型简单滤波图简单滤波图是什么简单滤波示例 复杂滤波图复杂滤波是什么区别示例 总结 前言 FFmpeg是一款功能强大的开源音视频处理工具&#xff0c;广泛应用于音视频的采集、编解码、转码、流化、过滤和播放等领域。1本文将重点介绍FFmpe…

Docker入门:从安装到实际应用

Docker入门指南&#xff1a;从安装到实际应用 Docker 是一个开源的平台&#xff0c;允许开发者通过容器技术来部署、管理和运行应用程序。容器是一种轻量级、独立的运行环境&#xff0c;可以包含应用程序及其所有依赖项&#xff0c;从而确保在不同环境下运行一致。本文将介绍 …

Python、Rust与AI的未来展望

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

【关于PHP性能优化,内存优化,日志工具等问题处理】

目录 PHP 性能优化&#xff1a; 如何优化 PHP 代码以提高性能&#xff1f; 通用优化策略&#xff1a; 框架特定优化&#xff1a; 性能优化最佳实践&#xff1a; 描述一下你使用过的 PHP 性能分析工具。 检测内存泄漏的方法 使用工具检测内存泄漏 常见内存泄漏场景及解决…