Centos7下Docker部署go-web项目

一 安装Docker

1.1 卸载Docker:

#查看包含docker的软件包
yum list installed | grep docker
#删除软件包
yum -y remove (软件包)
#删除docker相关存储
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker

1.2配置镜像源(阿里云镜像源)

 
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.3安装docker

 
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.4镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://9wztwpke.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.5测试

#查看docker版本
docker version
#测试hello-world
docker run hello-world

二:获取镜像

2.1拉取golang镜像,

#查看golang
docker search golang
#拉取镜像
docker pull golang:1.20
#查看已经拉取过的镜像
docker images

2.2拉取mysql,redis镜像

 docker pull mysql:8.0
 docker pull redis

三mysql与navica连接测试

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql01 mysql:8.0

指令详解:

docker run     #启动容器
-d             #后台运行容器
-p 3310:3306   #-p映射端口号,将3306映射为3310
-v             #数据卷挂载使数据持久化
-e             #修改环境变量
--name         #给你这个容器起个名字
mysql:8.0      #指定所用镜像

外部:navicat 连接数据库:

主机:虚拟机ip地址(ifconfig查看)

端口:映射的端口号:3310

用户名:root

密码:-e修改环境变量设置的密码

四.Dockerfile打包镜像

4.1Dockerfile:

在项目下起文件名Dockerfile,编写Dockerfile:

FROM golang:1.20 AS builder

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

# 移动到工作目录:/build
WORKDIR /build

# 将代码复制到容器中
COPY . .

# 下载依赖信息
RUN go mod download

# 将我们的代码编译成二进制可执行文件 library
RUN go build -o library-test-app .

###################
# 接下来创建一个小镜像
###################
FROM scratch

# 从builder镜像中把/dist/app 拷贝到当前目录
COPY --from=builder /build/library-test-app /

# 需要运行的命令
ENTRYPOINT ["/library-test-app"]

4.2构建镜像

将项目连带着dockerfile传送到虚拟机上

进入虚拟机内的项目目录中:

docker build . -t library

-t 构建项目名字

五.部署项目

目前项目需要用到三个容器:自身项目,mysql,redis。利用docker网络将三个容器进行通信

#创建一个自己的网络mynet自己网络名字
docker network create mynet
#启动三个容器并加入自己的网络
docker run -d --name redis --network mynet --network-alias redisnet -p 6379:6379 redis:latest
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root --network mynet --network-alias mysqlnet -p 3306:3306 mysql:8.0
docker run -p 8080:8080 --name library01 --network mynet library:latest

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值