Docker03 Docker部署初步实践

问题描述

服务A是一个静态博客网站,由Nginx提供HTTP服务(80端口),代码仓库为GitA。当向GitA中提交新的文件时,会触发Gitlab的Webhook的Push Events,向另一个端口8888提交一个POST请求。

服务B利用NodeJS,监听了8016端口,当收到webhook触发的POST请求后,会进行一些列的动作,拉取GitA中代码,清空文件夹,利用Hexo进行编译,将编译好的文件提供给服务A使用。

现在我的工作就是要将在传统服务器上的这两个服务迁移到Docker上来。由于这个博客的访问量很小,不用考虑太多优化的问题,所以只能算的上是Dokcer部署的“初步实践”。

如果保持原来的代码不做任何修改,也就是需要同时使用Nginx提供静态服务+NodeJS提供监听编译服务,有下面几种方案:

  1. 方案一:构建两个镜像,手动控制端口暴露
  2. 方案二:在同一个容器中,通过npm命令同时启动两个服务
  3. 方案三:构建两个容器,通过docker compose控制端口

如果对现有的代码进行修改,完全使用NodeJS提供静态服务和监听编译服务,那么就有方案四:完全使用NodeJS进程。

相应的代码在我的代码仓库里。

准备工作

准备.dockerignore文件

.dockerignore文件和.gitrignore文件,也就是制作镜像时排除在外的文件

node_modules
.DS_Store
public
source/_posts

npm-debug.log*
yarn-debug.log*
yarn-error.log*

.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*

public
source/_posts

Win7下docker镜像的ip地址

我的工作电脑是Win7系统,使用的是Docker官方提供的ToolBox的工具,工具使用没有问题,但是遇到了一个小坑,开发完了镜像,通过localhost访问指定端口,无论如何也连接不上。

后来发现是IP的问题,其实Docker一启动时就告诉了我暴露出来的地址了,奈何我自己眼瞎:

IP地址

通过docker-machine env这个命令也可以查看分配的IP,其中export DOCKER_HOST就是docker镜像分配的IP

$ docker-machine env

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="C:\Users\zhouhao1\.docker\machine\machines\
export DOCKER_MACHINE_NAME="default"
export COMPOSE_CONVERT_WINDOWS_PATHS="true"
# Run this command to configure your shell:
# eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env)

所以,应该通过192.168.99.100加上对应的端口号去访问镜像

准备好之后开始逐个方案进行介绍。

方案一:构建两个镜像,手动控制端口暴露

nginx容器

在Dockerfile中暴露出80端口,映射为本机IP的(http://192.168.99.100)的80端口。

同时在global.conf设定转发规则,将访问api地址的请求转发到本机IP的8016端口。

最后,在nginx.conf中设定一些基本的nginx配置项,关键点是daemon off,将nginx服务设定为前台方式运行,这是因为在docker中服务要以前台方式启动。

docker容器默认把容器内部第一个进程,也就是pid=1的进程作为docker容器是否正在运行的依据。如果此程序挂了ÿ

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值