自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Go 語言怎么使用 Docker 部署項目?

開發(fā) 項目管理
本文我們介紹怎么使用 Docker 部署 Go 項目。閱讀本文,需要讀者朋友們了解 Docker 的基本操作。

1介紹

Go 語言可以使用內(nèi)置命令行工具 go build 編譯生成可執(zhí)行文件。自 Go1.5 版本開始實現(xiàn)自舉后,交叉編譯也很方便,只需使用 GOOS、GOARCH 環(huán)境變量指定目標平臺和架構(gòu)。

部署 Go 項目,只需運行可執(zhí)行文件,一般有三種方式,分別是使用 nohup 命令、使用 supervisord 進程管理工具、使用 Docker。

本文我們介紹怎么使用 Docker 部署 Go 項目。閱讀本文,需要讀者朋友們了解 Docker 的基本操作。

2.web 項目

首先,我們開發(fā)一個簡單的 Go Web 項目,使用 Go 內(nèi)置命令行工具 go build 編譯生成可執(zhí)行文件 ./hello。

項目目錄:

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

我們使用 Go 標準庫編寫一個 Web 項目,運行編譯生成的可執(zhí)行程序,訪問 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,說明我們程序已正常運行。需要注意的是在我們構(gòu)建 Docker 鏡像之前,我們需要重新使用以下命令,交叉編譯生成 linux 平臺的可執(zhí)行程序。

# 編譯
GOOS=linux GOARCH=amd64 go build -o hello

在完成以上準備工作之后,我們開始編寫 Dockerfile 文件,使該項目可以支持使用 Docker 部署。

Dockerfile 文件:

# 基礎(chǔ)鏡像
FROM alpine:3.12
# 維護者
MAINTAINER frank
# docker build 時執(zhí)行命令 - 創(chuàng)建目錄
RUN mkdir -p "/data/app" \
&& ln -sf /dev/stdout /data/app/service.log
# 工作目錄
WORKDIR "/data/app"
# 拷貝
COPY hello /data/app/hello
# docker run 時執(zhí)行命令
ENTRYPOINT ["./hello"]

在編寫完 Dockerfile 文件之后,我們可以使用 docker 命令構(gòu)建鏡像,前提是我們本機已安裝 Docker。

docker build -t hello:v1.0.0 .

運行以上構(gòu)建 Docker 鏡像的命令之后,我們就已成功構(gòu)建 Docker 鏡像。

3.Docker 部署

我們已經(jīng)構(gòu)建好了 Docker 鏡像,現(xiàn)在可以使用 Docker 部署項目了。

首先,執(zhí)行 docker images 命令,查看鏡像列表。

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

運行上面命令,我們可以看到我們構(gòu)建好的鏡像名稱為 hello 的 Docker 鏡像。

然后,我們使用該鏡像,運行一個容器。

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

需要注意的是,我們使用宿主機端口 9090 映射容器端口 8080。其中參數(shù) -d 用于該程序在后臺運行,參數(shù) -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

執(zhí)行 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,說明我們已經(jīng)成功完成使用 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 #

4.Docker 容器管理工具 docker compose

使用 Docker 部署 Go 項目,我們需要先使用 docker build 命令構(gòu)建 Docker 鏡像,然后使用 docker run 命令運行容器,并且命令后面一般還需要一些參數(shù),操作多少有些繁瑣。

我們可以使用 Docker 容器管理工具 docker compose 解決此問題。讀者朋友們?nèi)绻涣私?docker compose,請自行查閱相關(guān)資料,限于篇幅,本文不再贅述。

我們主要介紹怎么將 docker compose 和 Dockerfile 配合使用,管理容器和鏡像。

我們需要創(chuàng)建一個 docker-compose.yml 文件,在該文件中配置運行容器需要的命令和參數(shù)。

docker-compose.yml 文件:

version: '3.8'
services:
webapp:
restart: always # Docker 重啟時,容器也重啟
build: # 構(gòu)建 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
# 關(guān)閉容器
docker-compose stop
# 啟動容器
docker-compose start
# 重啟容器
docker-compose restart
# 關(guān)閉并刪除容器
docker-compose down

需要注意的是,使用 docker-compose 命令行工具,需要在 docker-compose.yml 文件當前目錄執(zhí)行。

5.總結(jié)

本文我們介紹怎么使用 Docker 部署 Go 項目,并且介紹 Docker 容器管理工具 docker compose 的簡單使用,關(guān)于 docker 和 docker compose 的更多介紹,感興趣的讀者朋友們可以自行查閱資料。

使用 Docker 部署 Go 項目,主要共分為四步:

  • 交叉編譯
  • 編寫 Dockfile 文件
  • 構(gòu)建鏡像
  • 運行容器
責(zé)任編輯:武曉燕 來源: Golang語言開發(fā)棧
相關(guān)推薦

2023-01-16 00:12:20

Go語言Web

2022-06-05 23:30:25

AES加密算法

2022-08-15 08:06:49

Go語言類型

2022-07-03 23:07:48

Go語言參數(shù)

2024-04-01 00:02:56

Go語言代碼

2022-07-04 14:41:31

Go 語言變長參數(shù)變長參數(shù)函數(shù)

2023-02-13 00:24:37

Go語言日志庫

2022-11-06 23:17:23

Go語言項目

2022-03-13 23:51:39

Web項目Go

2023-12-29 07:04:28

Go項目Docker編寫

2021-09-08 06:51:53

DockerCoupons項目

2023-07-16 23:43:05

Go語言模式

2022-05-16 10:58:12

Go 項目Makefilemake

2023-02-26 23:49:17

Go語言監(jiān)聽庫

2023-08-08 10:23:34

2024-10-28 00:40:49

Go語法版本

2021-07-26 11:19:43

微服務(wù)開發(fā)技術(shù)

2018-03-12 22:13:46

GO語言編程軟件

2022-07-29 15:19:27

Dockersudo權(quán)限

2019-07-01 09:33:58

DockerNginx操作系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號