成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

1介紹

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

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

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

2.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 鏡像。

3.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 #

4.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 文件當前目錄執行。

5.總結

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

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

  • 交叉編譯
  • 編寫 Dockfile 文件
  • 構建鏡像
  • 運行容器
責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

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語言參數

2024-04-01 00:02:56

Go語言代碼

2022-07-04 14:41:31

Go 語言變長參數變長參數函數

2023-02-13 00:24:37

Go語言日志庫

2022-11-06 23:17:23

Go語言項目

2023-12-29 07:04:28

Go項目Docker編寫

2022-03-13 23:51:39

Web項目Go

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語言監聽庫

2024-10-28 00:40:49

Go語法版本

2023-08-08 10:23:34

2018-03-12 22:13:46

GO語言編程軟件

2021-06-08 10:41:00

Go語言算法

2024-01-02 10:38:22

Go語言數組

2024-02-06 17:57:06

Go語言任務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频欧美视频 | 国产精品3区| 国产精品美女久久久久aⅴ国产馆 | 一级做a爰片性色毛片视频停止 | 欧美日韩精品亚洲 | 国产精品一区二区久久 | 成人日韩精品 | 成在线人视频免费视频 | 精品乱人伦一区二区三区 | 欧美8一10sex性hd | 欧美成年网站 | 午夜视频一区二区三区 | 日韩成人高清在线 | 亚洲国产中文字幕 | 天天噜天天干 | 婷婷在线网站 | 成人欧美一区二区 | 日韩手机在线看片 | 午夜精品在线观看 | 97avcc| 成人一区二区三区在线观看 | 天堂在线1| 精品国产乱码久久久久久丨区2区 | 99国内精品久久久久久久 | www.黄色在线观看 | 国产精品成人在线播放 | 91国在线高清视频 | 亚洲+变态+欧美+另类+精品 | 日韩精品视频一区二区三区 | 国产精品99久久久久久www | 91在线资源 | 欧美一级特黄aaa大片在线观看 | 亚洲日本中文字幕在线 | 日韩色视频 | 6080yy精品一区二区三区 | 在线免费国产视频 | 中文字幕一区二区三区在线观看 | 91精品一区二区三区久久久久 | 91超碰在线观看 | 日韩精品一区二区三区在线播放 | av一区二区三区 |