CentOS 7 Docker安装部署Go Web
Docker 是一种容器技术,它部署简单,能很好的进行服务隔离,生成镜像,Push到镜像仓库,其他机器一键拉取部署。
Docker分为社区版CE和企业版EE,社区版是免费提供给个人和小型团队使用,企业版会提供额外的收费服务。
CentOS 7使用Yum安装Docker,部署Go Web网站。本Go Web网站是我的个人愽客(http://snaill.net/),使用Gin+Gorm+Mysql+Nginx开发,本次只将Web愽客程序部署在Docker中,Mysql、Nginx暂时还部署在宿主机上。
一、安装Docker
1、Docker要求CentOS系统内核版本高于3.10,通过 uname –r 命令查看内核版本
2、使用 sudo yum update 命令更新yum包到最新
sudo yum update
3、如果安装过旧版本的话,卸载旧版本
sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源信息
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
国内可使用阿里云,docker速度慢
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
6、可查看所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、安装Docker
sudo yum install docker-ce
如果想安装其他版本,在后面加上版本号,如:sudo yum install docker-ce-3:19.03.8
8、启动Docker
systemctl start docker
启动 start,停止 stop,重启 restart
设置开机启动
systemctl enable docker
查看Docker版本 docker version
到止Docker安装完成
二、部署Go Web
1、交叉编译Web项目,
由于开发环境是windows,所以进行交叉编译linux版Web项目,vs code终端PowerShell命令
$env:GOOS="linux" -- 设置运行系统
go build -- 编译
2、由于Mysql装在宿主机上,Web需要访问,修改DB连接IP为172.17.0.1
由于mysql默认只能本机登录,通过以下命令,设置允许远程登录
mysql>GRANT ALL PRIVILEGES ON *.* TO 'your username'@'172.17.0.2' IDENTIFIED BY 'your password' WITH GRANT OPTION;
your username 和 your password 改成 mysql 数据库的用户名和密码
安装Docker后,172.17.0.2为Docker的默认IP
进入Docker:docker exec -it CONTAINER_ID sh
查看ip:ifconfig
宿主机的默认IP为172.17.0.1
3、编写Dockerfile文件,在项目根目录下新建名为Dockerfile的文件,内容如下,推荐第二种方式
3.1、项目文件全部打包到镜像里
FROM alpine WORKDIR /data/www/wblog_docker
COPY wblog /wblog/
COPY conf/ /wblog/conf/
COPY sitedata/ /wblog/sitedata/
COPY static/ /wblog/static/
COPY views/ /wblog/views/
WORKDIR /wblog RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone EXPOSE 8090 ENTRYPOINT ["./wblog"]
3.2、配置等静态文件不打包到镜像里,运行时再映射到宿主机目录,修改配置而无需重新打包,
FROM alpine WORKDIR /data/www/wblog_docker
COPY wblog /wblog/
WORKDIR /wblog RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone EXPOSE 8090 ENTRYPOINT ["./wblog"]
4、上传编译好的Web项目文件到 CentOS 机器上
5、根据 Dockerfile 打包 Docker 镜像
在CentOS上进入到项目根目录下,执行docker build打包镜像,命名最后的 . 指以当前目录下的Dockerfile文件打包镜像
docker build -t wblog:v1.0 .
6、打包完成后,输入 docker images 查看镜像
7、Docker 启动镜像,运行项目,两种方式对应3中的两种方式,推荐第二种方式
7.1、项目文件全在镜像中,运行 Docker 镜像
docker run -d -p 8090:8090 --name wblog wblog:v1.0
7.2、配置等静态文件映射到宿主机本地,运行 Docker 镜像,-v docker目录:宿主机目录
docker run -v /data/www/wblog_docker/conf:/wblog/conf -v /data/www/wblog_docker/sitedata:/wblog/sitedata -v /data/www/wblog_docker/static:/wblog/static -v /data/www/wblog_docker/views:/wblog/views -v /data/www/wblog_docker/log:/wblog/log -d -p 8090:8090 --name wblog wblog:v1.0
8、查看Docker运行情况 docker ps
STATUS 为Up xxx 状态运行,PORTS 为 0.0.0.0:8090->8090/tcp 宿主机端口映射Docke端口成功,Docker镜像运行成功。
个人博客就是部署在Docker中的,用Nginx代理,将snaill.net转发到8090端口
docker 常用命令
打包镜像:docker build -t wblog:v1.0 .
运行Docker镜像:docker run -d -p 8090:8090 --name wblog wblog:v1.0
静态文件映射到宿主机本地,运行Docker镜像:
docker run -v /data/www/wblog_docker/conf:/wblog/conf -v /data/www/wblog_docker/sitedata:/wblog/sitedata -v /data/www/wblog_docker/static:/wblog/static -v /data/www/wblog_docker/views:/wblog/views -v /data/www/wblog_docker/log:/wblog/log -d -p 8090:8090 --name wblog wblog:v1.0
查看运行镜像容器:docker ps -a
启动/停止/重启镜像容器:docker start/stop/restart
删掉镜像容器:docker rm ,删除前需先停止镜像容器
删掉镜像:docker rmi ,删除前需先删除镜像容器
查看镜像容器元信息:docker inspect
进入镜像容器:docker exec -it CONTAINER_ID sh
CentOS 7 Docker安装部署Go Web的更多相关文章
- docker安装部署、fastDFS文件服务器搭建与springboot项目接口
一.docker安装部署 1.更新yum包:sudo yum update 2.安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动 ...
- 使用docker安装部署Spark集群来训练CNN(含Python实例)
使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...
- Docker安装部署es集群
Docker安装部署es集群:环境准备:已安装docker的centos服务器一台1. 拉取es版本docker pull elasticsearch:5.6.82. 新建文件夹 数据挂载目录 和 配 ...
- Docker安装部署Rancher
# 一.Rancher简介 [Rancher](https://www.cnrancher.com/rancher/)是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开 ...
- CentOS 6.5安装部署Zabbix监控系统
CentOS 6.5安装部署Zabbix监控系统 先说一点废话,我没有用centos7做实验,讲真,centos 7我也不常用,喜欢新版本的同学其实可以尝试下,注意一点的就是centos 6.5只支持 ...
- CentOS下Docker安装
CentOS下Docker安装 1.安装: #sudo yum install docker 2.启动并加入开机启动: A.#sudo systemctl start docker B.#sudo s ...
- CentOS环境Docker安装教程(官方推荐的docker三种方式安装)
CentOS环境Docker安装教程(官方推荐的docker三种方式安装) 一.使用yum方式安装 1.安装依赖包 $ sudo yum install -y yum-utils device-map ...
- Docker 安装部署
Docker学习笔记 一.Ubuntu Docker 安装 (1).获取最新版本Docker安装包 lyn@lyn:/data/docker$ sudo wget -qO- https://get.d ...
- CentOS 使用 Docker 安装 Sentry
官网介绍:Sentry是一个实时事件日志记录和汇集的日志平台,其专注于错误监控,以及提取一切事后处理所需的信息.他基于Django开发,目的在于帮助开发人员从散落在多个不同服务器上的日志文件里提取发掘 ...
随机推荐
- 第四届蓝桥杯C++B组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的 ...
- 第八届蓝桥杯JavaB组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.购物单 题目描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推 ...
- java代码(2)---Java8 Stream
stream Java8新特性Stream流,那Stream表达式到底是什么呢,为什么可以使你的代码更加整洁而且对集合的操作效率也会大大提高? 一.概述 1.什么是Stream Stream是一种可供 ...
- unittest单元测试框架入门及应用
一.简介 unittest是Python单元测试框架.unittest它支持自动化测试,在测试中使用setup(初始化)和shutdown(关闭销毁)操作,组织测试 用例为套件(批量运行),以及把测试 ...
- 基本的bash shell 命令
1.遍历目录:cd 2.显示目录列表:ls 3.创建文件:touch 4.复制文件:cp 5.链接文件:ln 6.重命名文件:mv 7.删除文件:rm 8.创建目录:mkdir 9.删除目录:rmdi ...
- Java学习的一般过程
伴随着科学技术的不断发展,世界开始走向信息化.网络化.大数据化.自然而然,计算机专业变得十分热门.尽管如此,计算机专业人才对社会来说仍然是供不应求,当然,这里指的是高层次技术人才.因此,对于我们这些占 ...
- 学习ASP.NET Core(10)-全局日志与xUnit系统测试
上一篇我们介绍了数据塑形,HATEOAS和内容协商,并在制器方法中完成了对应功能的添加:本章我们将介绍日志和测试相关的概念,并添加对应的功能 一.全局日志 在第一章介绍项目结构时,有提到.NET Co ...
- [转] 间接系统调用syscall(SYS_gettid)
点击阅读原文 在linux下每一个进程都一个进程id,类型pid_t,可以由 getpid()获取. POSIX线程也有线程id,类型pthread_t,可以由 pthread_self()获取,线程 ...
- RFID-RC522 模块的读写操作【Arduino】
接线 Arduino Uno <-> RFID-RC52210 <-> SDA13 <-> SCK11 <-> MOSI12 <-> MIS ...
- 科学计算:Python 分析数据找问题,并图形化
对于记录的数据,如何用 Python 进行分析.或图形化呢? 本文将介绍 numpy, matplotlib, pandas, scipy 几个包,进行数据分析.与图形化. 准备环境 Python 环 ...