阿里云ECS大保健Docker部署Go服务+mysql+Nginx反向代理全套

前几天发现双十一阿里云ECS打折活动,于是买了个199/年的乞丐版练练手

从阿里云服务管理控制台首次登录会生成一个远程连接密码,此密码只出现一次,注意保存。
接下来对外网访问端口进行设置,否则无法正常从公网访问。
【云服务控制台】—–>【实例列表】—->【管理】—->【本实例安全组】
打开如下界面

点击【配置规则】添加3个端口的访问

 

打开终端命令行输入ssh root@[远程ip地址]

回车会提示输入root密码(ps:root密码需要在云控制台设置)
登录成功后,会打印出欢迎内容

到此,云服务器主机已经配置好,接下来可以安装一些工具啥的开始干活了。

docker是一个容器引擎,每个容器可以看做是一个隔离的虚拟主机。docker可以创建一个容器用来管理服务的运行停止等,当然作为一个“虚拟主机”,构建某类型服务时,需要依赖于服务所依赖的运行编译环境,即“镜像”。简单点理解,来一幅通俗易懂的图。

大概跑起来之后是这么个样子,因为容器与容器之间,容器与主机之间是隔离的,故不能直接私有访问。
简单理解是这么个玩意,详情请进入Docker官方渠道介绍学习docker中文社区

本文以ubuntu 16.04系统介绍安装
首先,执行安装命令

接下来启动docker后台服务

如果在本机尝试,可能需要设置国内镜像,或者直接FQ
设置国内镜像可在/etc/docker/daemon.json文件中加入

接下来可以用docker search来搜索所需镜像

然后下载镜像

docker部署GO服务首先需要创建Dockerfile,注意Dockerfile的名字一定要是”Dockerfile”。
进入GOPATH下某项目的根目录新建文件“Dockerfile”,写入一下内容

然后保存,执行docker build命令

build完成后可以看到successfully日志,当然,若未编译通过,编译失败的日志也可以看到
成功后执行docker run命令创建并运行容器

无论成功或失败,都会生成容器id
执行docker ps -a 命令查看所有容器

状态up,表示正常运行
也可以使用docker logs查看容器日志

注意,安装后不要着急启动mysql服务,如果已经启动
使用service mysql stop停止mysql服务。因为数据库的创建用户权限设置等都要在mysql的docker容器中进行,因为先运行则会占用3306端口和mysql docker容器冲突。
搜索并下载mysql docker进行

我这里是已经下载好了,如需下载,执行docker pull mysql下载镜像

执行docker ps -a 查看运行情况

进入mysql容器交互命令行状态,准备创建数据库设置用户权限等操作

使用root账号进入mysql

为何要使用nginx?我这里的需求是为了解决访问带端口号的问题。http请求默认是80端口,一般访问一个网站不带端口默认就访问了80端口。当我们的服务不在80端口时,就需要通过nginx反向代理来映射到真实的服务端口地址。当然,nginx也可以做负载均衡。

安装完成以后,文件夹如下所示
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
同样,安装完之后确保nginx服务未启动
执行 service nginx stop停止服务

接下来下载nginx docker镜像

docker pull nginx下载nginx镜像备用

首先启动一次nginx docker容器

然后,将docker中的nginx配置文件拷贝到本地主机

完了之后将刚刚启动的nginx docker容器停止并删除

解释一下为何要拷贝,因为拷贝到本地是为了待会儿挂载在容器中,方便修改。
接下来配置文件添加
默认情况下nginx.conf都会指向conf.d中的子配置文件,如图

接下来在/root/nginx/etc/conf.d/创建一个反向代理配置文件gogs.conf
填入一下内容

填好后,此时配置已完成

执行docker run命令创建并运行nginx容器

将nginx容器中的配置路径映射到本地主机的配置路径中。
执行docker ps -a 查看运行情况

接下来就可以直接使用ip或者域名不带端口(默认80端口)访问主机中8080端口的服务了

原文链接:https://www.cnblogs.com/dfsxh/articles/12766051.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享