需求:
只有一台云主机,但有多个不同域名网站,甚至还有二级域名。不能通过端口访问,即只有域名(二级域名)。同时需要启用 https (到期自动更新证书)。
网站内容为静态文件(当前暂定),docker 部署。使用原始httpd镜像,但是网站文件挂载。
使用 gitlab 管理网站源文件,通过 CI 构建静态文件,并自动更新到云主机。

目录

创建目录/home/latelee/docker/composefile/httpd,下设vhost.dacmecerts目录,再创建网站文件挂载目录,如html1html2,等等。

云主机

需要在域名后台添加子域名和IP的映射,否则无法访问。
云主机需要开启 80 和 443 端口。

部署

为方便管理,使用docker-compose部署。
反向代理:

proxy:image: jwilder/nginx-proxycontainer_name: nginx-proxyrestart: alwaysports:- 80:80- 443:443labels:com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"volumes:- ./certs:/etc/nginx/certs:ro- ./acme:/acmecerts- ./vhost.d:/etc/nginx/vhost.d- ./html:/usr/share/nginx/html- /var/run/docker.sock:/tmp/docker.sock:ronetworks:

使用镜像名为jwilder/nginx-proxy,可到 官网 了解文档。
其中需要映射 80 和 443 端口,标签com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy是必须的,否则docker-letsencrypt-nginx-proxy-companion连不上代理容器。为方便管理,大部分挂载目录都在当前目录,注意,certs 是只读的。

https 认证:

letsencrypt-companion:image: jrcs/letsencrypt-nginx-proxy-companioncontainer_name: letsencryptrestart: alwaysvolumes:- ./certs:/etc/nginx/certs- ./vhost.d:/etc/nginx/vhost.d- ./html:/usr/share/nginx/html- /var/run/docker.sock:/var/run/docker.sock:ronetworks:- nginxp-netdepends_on:- proxy

使用镜像jrcs/letsencrypt-nginx-proxy-companion,可到 官网 了解详情。挂载目录也是必须的,其中自动创建的证书位于 certs 目录中。(存疑:证书有效期为三个月,到期是否自动更新?)

网站服务容器:

  http1:image: httpdcontainer_name: httpd1volumes:- ./html1:/usr/local/apache2/htdocs/environment:- VIRTUAL_HOST=latelee.org,www.latelee.org- LETSENCRYPT_HOST=latelee.org,www.latelee.org- LETSENCRYPT_EMAIL=test@latelee.org- ENABLE_ACME=truenetworks:- nginxp-net

挂载当前目录 html1 为 apache 的服务根目录,里面为静态网站文件。注意,由于 httpd 只暴露了一个 80 端口,所以此处不需要指定 VIRTUAL_PORT 的值,反向代理容器会自动指定这个端口。VIRTUAL_HOST 和 LETSENCRYPT_HOST 指定了主机域名,可同时指定多个,使用逗号隔开即可。为方便理解,一般指定无前缀和带www的域名。LETSENCRYPT_EMAIL 指定邮箱,方便接收 letsencrypt 发的邮件。

这是一个模板,可以根据需求任意添加。如:

  http2:image: httpdcontainer_name: httpd2volumes:- ./html1:/usr/local/apache2/htdocs/environment:- VIRTUAL_HOST=i.latelee.org- LETSENCRYPT_HOST=i.latelee.org- LETSENCRYPT_EMAIL=test@latelee.org- ENABLE_ACME=truenetworks:- nginxp-net

启动

使用如下命令启动:

docker-compose up -d

可针对个别服务进行启动、停止操作,如:

docker-compose up -d http2
docker-compose stop http2
docker-compose start http2

参考资料

https://www.v2ex.com/amp/t/365967

我的docker随笔22:多域名同主机部署相关推荐

  1. 我的docker随笔31:oracle数据库再次部署

    本文涉及一种在容器中部署 oracle 数据库的方法.经验证,可达到预期目标,并能应用在实际工作中. 引言 去年曾经部署过 oracle,当时使用阿里云仓库上的镜像,版本为 11.2, 但一直解决不了 ...

  2. 使用nginx实现一个主机部署多域名指向不同docker项目

    使用nginx实现一个主机部署多域名指向不同docker项目 原文:使用nginx实现一个主机部署多域名指向不同docker项目  1,安装 docker yum install docker 使用D ...

  3. docker自动续期Freenom域名,配置邮件提醒

    1.引言 众所周知,Freenom是地球上唯一一个提供免费顶级域名的商家,不过需要每年续期,每次续期最多一年.利用docker自动续期Freenom域名,并配置邮件提醒 1.1 项目地址 freeno ...

  4. 我的docker随笔7:docker容器与主机之间文件拷贝

    背景 Docker提供cp命令,用于主机和容器之间相互拷贝. docker cp命令 下面所有示例的命令都是在主机进行的. 命令形式如下: docker cp <主机目录或文件的路径> & ...

  5. IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证

    IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证 Docker开启远程访问 修改该Docker服务文件 加载配置与重启 验证是否开启成功 IDEA配置docker 编写 ...

  6. Docker 三剑客-------docker swam,visualizer监控、stack部署集群、Portainer可视化

    Docker 三剑客-------docker swam.visualizer监控.stack部署集群.Portainer可视化 文章目录 Docker 三剑客-------docker swam.v ...

  7. docker容器和宿主机的主机名映射失败

    一.为什么将 Oracle 部署在 docker容器中 我们首先通过 docker 安装了 oracle11g 版本的 Oracle 数据库--不要问我为什么通过 docker 安装数据库,正确做法或 ...

  8. 通过域名访问自己部署到服务器上的项目

    通过域名访问自己部署到服务器上的项目 如何不输入项目名端口号直接访问java web项目 1.省略输入端口号的步骤 在Linux的下面部署了tomcat,为了安全我们使用非root用户进行启动,但是在 ...

  9. Docker的网络模式和跨主机通信

    文章转载自:http://www.a-site.cn/article/169899.html Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0 ...

最新文章

  1. document 获得元素节点,属性节点,文本节点。
  2. 关于计算机专业的作文800字,我的电脑作文800字范文
  3. sql server 2008学习11 UDF用户自定义函数
  4. 牛客 - 小V的序列(思维+位运算)
  5. jQuery 属性选择器
  6. Android为TV端助力 post带数据请求方式,传递的数据格式包括json和map
  7. Django之models
  8. anacodna/python 安装 tensorflow
  9. TurboMail邮件服务器帮你应付电子邮件归档危机
  10. uniapp 表单提交图片跟其他填写数据_记录第一次实现表单数据提交到数据库
  11. 10%的IOS设备已经更新到版本5.1.1
  12. 阿里云马涛:云原生时代的开源操作系统长什么样
  13. 重访火星时代网_huadingjin_新浪博客
  14. 《凤凰项目:一个IT运维的传奇故事》的读后感
  15. 【推荐】智慧城市顶层设计及其建设规划实施解决方案可行性研究报告合集(共107份,963M)
  16. 程序员:走路也可以帮你拥有完美的翘臀!
  17. 【python进阶】古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  18. 墨觉、韶音、南卡哪个品牌好?三款骨传导耳机全方位实测对比
  19. Java如何实现手动连接数据库(Mysql或Oracle) | 超级详细,建议收藏
  20. 信息与计算机,科学网—信息与计算机(1) - 姜咏江的博文

热门文章

  1. Mysql也可以联合多表更新和删除
  2. AMD CEO苏姿丰称芯片短缺还将持续 今年相当紧缺
  3. 苹果支付招聘业务开发经理 需有加密货币支付工作经验
  4. 华为再次重申不造车!谁再言造车,调离岗位
  5. 我们采访了小鹏G3「高温抑菌」项目负责人,发现智能车OTA并不简单
  6. 疫情后全国热门博物馆榜单出炉 第一名竟不是故宫
  7. 罗永浩直播又翻车?网友吐槽半价车是黑幕,本人回应
  8. 又涨价了!华为 P40系列海外售价曝光:还好国行版友好不少
  9. 小米财报:Q3营收537亿创新高 经调净利35亿超市场预期
  10. 2017和2019对比图刷屏,真实扎心!苹果中国女老板也跟风晒图...