关于后端:docker部署go项目

2次阅读

共计 3136 个字符,预计需要花费 8 分钟才能阅读完成。

介绍

Go 语言能够应用内置命令行工具 go build 编译生成可执行文件。自 Go1.5 版本开始实现自举后,穿插编译也很不便,只需应用 GOOS、GOARCH 环境变量指定指标平台和架构。

部署 Go 我的项目,只需运行可执行文件,个别有三种形式,别离是应用 nohup 命令、应用 supervisord 过程管理工具、应用 Docker。

本文咱们介绍怎么应用 Docker 部署 Go 我的项目。浏览本文,须要读者敌人们理解 Docker 的基本操作。

web 我的项目

首先,咱们开发一个简略的 Go Web 我的项目,应用 Go 内置命令行工具 go build 编译生成可执行文件 ./hello。

我的项目目录:

.
├── Dockerfile
├── go.mod
├── hello
├── main.go
└── service.log

咱们应用 Go 规范库编写一个 Web 我的项目,运行编译生成的可执行程序,拜访 http://127.0.0.1:8080/hello,输入 hello word。

编译

go build -o hello
./hello

拜访

curl http://127.0.0.1:8080/hello

输入

hello world

如果应用 curl 拜访,能够失常输入 hello world,阐明咱们程序已失常运行。须要留神的是在咱们构建 Docker 镜像之前,咱们须要从新应用以下命令,穿插编译生成 linux 平台的可执行程序。

编译

GOOS=linux GOARCH=amd64 go build -o hello

在实现以上筹备工作之后,咱们开始编写 Dockerfile 文件,使该我的项目能够反对应用 Docker 部署。

Dockerfile 文件:

# 根底镜像
FROM alpine:3.12
# 维护者
MAINTAINER frank
# docker build 时执行命令 - 创立目录
RUN mkdir -p "/data/app" \
&& ln -sf /dev/stdout /data/app/service.log
# 工作目录
WORKDIR "/data/app"
# 拷贝
COPY hello /data/app/hello
# docker run 时执行命令
ENTRYPOINT ["./hello"]

在编写完 Dockerfile 文件之后,咱们能够应用 docker 命令构建镜像,前提是咱们本机已装置 Docker。

docker build -t hello:v1.0.0 .
运行以上构建 Docker 镜像的命令之后,咱们就已胜利构建 Docker 镜像。

Docker 部署

咱们曾经构建好了 Docker 镜像,当初能够应用 Docker 部署我的项目了。

首先,执行 docker images 命令,查看镜像列表。

docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
hello        v1.0.0    8daaf8297956   11 seconds ago   11.7MB

运行下面命令,咱们能够看到咱们构建好的镜像名称为 hello 的 Docker 镜像。

而后,咱们应用该镜像,运行一个容器。

docker run -d -p 9090:8080 hello:v1.0.0
74f75a374493f21caaf0f2e7f3d14698c3909446c78af6dc1172ac3f9052d839

须要留神的是,咱们应用宿主机端口 9090 映射容器端口 8080。其中参数 -d 用于该程序在后盾运行,参数 -p 用于映射端口。

查看容器列表:

docker ps -a
CONTAINER ID   IMAGE          COMMAND     CREATED         STATUS         PORTS                    NAMES
74f75a374493   hello:v1.0.0   "./hello"   9 seconds ago   Up 8 seconds   0.0.0.0:9090->8080/tcp   dazzling_ramanujan

执行 docker ps -a 命令,咱们能够查看容器列表。

最初,咱们应用 curl 拜访 http://127.0.0.1:9090/hello,输入 hello world。

拜访

curl http://127.0.0.1:9090/hello

输入

hello world

如果应用 curl 拜访,能够失常输入 hello world,阐明咱们曾经胜利实现应用 Docker 部署 Go 我的项目。

咱们能够应用 docker logs 命令,查看程序日志。

docker logs -f 74
2022/04/09 05:09:08 [info]run success
2022/04/09 05:09:21 [info]run success
2022/04/09 05:09:21 [info]run success
2022/04/09 05:09:22 [info]run success

咱们能够应用 docker exec 命令进入容器中,查看我的项目文件。

docker exec -it 74 /bin/sh
/data/app # ls -al
total 5948
drwxr-xr-x    1 root     root          4096 Apr  9 05:07 .
drwxr-xr-x    1 root     root          4096 Apr  9 05:07 ..
-rwxr-xr-x    1 root     root       6075093 Apr  9 04:12 hello
lrwxrwxrwx    1 root     root            11 Apr  9 05:07 service.log -> /dev/stdout
/data/app #
04 

Docker 容器管理工具 docker compose

应用 Docker 部署 Go 我的项目,咱们须要先应用 docker build 命令构建 Docker 镜像,而后应用 docker run 命令运行容器,并且命令前面个别还须要一些参数,操作多少有些繁琐。

咱们能够应用 Docker 容器管理工具 docker compose 解决此问题。读者敌人们如果不理解 docker compose,请自行查阅相干材料,限于篇幅,本文不再赘述。

咱们次要介绍怎么将 docker compose 和 Dockerfile 配合应用,治理容器和镜像。

咱们须要创立一个 docker-compose.yml 文件,在该文件中配置运行容器须要的命令和参数。

docker-compose.yml 文件:

version: '3.8'
services:
  webapp:
    restart: always # Docker 重启时,容器也重启
    build: # 构建 Docker 镜像
      context: ./ # Dockerfile 文件的目录
      dockerfile: Dockerfile # Dockerfile 文件的名称
    image: hello:1.0.0 # 镜像名称和版本号
    container_name: hello # 容器名称
    ports: # 宿主机和容器之间映射端口
      - "9090:8080"

在编写完 docker-compose.yml 文件之后,咱们能够应用 docker-compose 命令行工具治理容器。

# 启动容器
docker-compose up -d
# 查看容器列表
docker-compose ps
# 查看日志
docker-compose -f
# 敞开容器
docker-compose stop
# 启动容器
docker-compose start
# 重启容器
docker-compose restart
# 敞开并删除容器
docker-compose down

须要留神的是,应用 docker-compose 命令行工具,须要在 docker-compose.yml 文件当前目录执行。

总结

本文咱们介绍怎么应用 Docker 部署 Go 我的项目,并且介绍 Docker 容器管理工具 docker compose 的简略应用,对于 docker 和 docker compose 的更多介绍,感兴趣的读者敌人们能够自行查阅材料。

应用 Docker 部署 Go 我的项目,次要共分为四步:

  1. 穿插编译
  2. 编写 Dockfile 文件
  3. 构建镜像
  4. 运行容器

关注 获取更多好文

本文由 mdnice 多平台公布

正文完
 0