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

Go 語言怎么使用 Docker 部署項(xiàng)目?

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

1介紹

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

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

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

2.web 項(xiàng)目

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

項(xiàng)目目錄:

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

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

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

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

Dockerfile 文件:

# 基礎(chǔ)鏡像
FROM alpine:3.12
# 維護(hù)者
MAINTAINER frank
# docker build 時(shí)執(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 時(shí)執(zhí)行命令
ENTRYPOINT ["./hello"]

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

docker build -t hello:v1.0.0 .

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

3.Docker 部署

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

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

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

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

然后,我們使用該鏡像,運(yùn)行一個(gè)容器。

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

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

我們可以使用 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 命令進(jìn)入容器中,查看項(xiàng)目文件。

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 項(xiàng)目,我們需要先使用 docker build 命令構(gòu)建 Docker 鏡像,然后使用 docker run 命令運(yùn)行容器,并且命令后面一般還需要一些參數(shù),操作多少有些繁瑣。

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

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

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

docker-compose.yml 文件:

version: '3.8'
services:
webapp:
restart: always # Docker 重啟時(shí),容器也重啟
build: # 構(gòu)建 Docker 鏡像
context: ./ # Dockerfile 文件的目錄
dockerfile: Dockerfile # Dockerfile 文件的名稱
image: hello:1.0.0 # 鏡像名稱和版本號(hào)
container_name: hello # 容器名稱
ports: # 宿主機(jī)和容器之間映射端口
- "9090:8080"

在編寫完 docker-compose.yml 文件之后,我們可以使用 docker-compose 命令行工具管理容器。

# 啟動(dòng)容器
docker-compose up -d
# 查看容器列表
docker-compose ps
# 查看日志
docker-compose -f
# 關(guān)閉容器
docker-compose stop
# 啟動(dòng)容器
docker-compose start
# 重啟容器
docker-compose restart
# 關(guān)閉并刪除容器
docker-compose down

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

5.總結(jié)

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

使用 Docker 部署 Go 項(xiàng)目,主要共分為四步:

  • 交叉編譯
  • 編寫 Dockfile 文件
  • 構(gòu)建鏡像
  • 運(yùn)行容器
責(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語言類型

2024-04-01 00:02:56

Go語言代碼

2022-07-03 23:07:48

Go語言參數(shù)

2022-07-04 14:41:31

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

2023-02-13 00:24:37

Go語言日志庫

2022-11-06 23:17:23

Go語言項(xiàng)目

2023-12-29 07:04:28

Go項(xiàng)目Docker編寫

2022-03-13 23:51:39

Web項(xiàng)目Go

2021-09-08 06:51:53

DockerCoupons項(xiàng)目

2023-07-16 23:43:05

Go語言模式

2022-05-16 10:58:12

Go 項(xiàng)目Makefilemake

2023-02-26 23:49:17

Go語言監(jiān)聽?zhēng)?/a>

2023-08-08 10:23:34

2024-10-28 00:40:49

Go語法版本

2018-03-12 22:13:46

GO語言編程軟件

2021-06-08 10:41:00

Go語言算法

2024-01-02 10:38:22

Go語言數(shù)組

2020-08-12 08:56:30

代碼凱撒密碼函數(shù)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 在线a视频 | 美女131mm久久爽爽免费 | 亚洲综合无码一区二区 | 久久综合久久综合久久 | 亚洲va欧美va天堂v国产综合 | 在线免费亚洲视频 | 亚洲欧美中文字幕在线观看 | 日韩在线一区二区 | aⅴ色国产 欧美 | 小川阿佐美pgd-606在线 | 久久久青草婷婷精品综合日韩 | 啪一啪在线视频 | 精品久久久久久久久久 | 欧美一区二区在线观看 | 九九精品网 | 伦理午夜电影免费观看 | 国产精品一区二 | 欧美一级片免费看 | 操人视频在线观看 | 精品国产乱码久久久久久闺蜜 | 欧美日韩精选 | 国产91精品久久久久久久网曝门 | caoporon| 欧美日韩在线一区 | 日日干夜夜操 | 亚洲九九| 在线久草 | 午夜视频一区 | 精品国产18久久久久久二百 | 天堂素人约啪 | 亚洲欧美激情四射 | a级片在线观看 | 国产精品免费观看 | 天天爽天天操 | 欧美日韩精品一区二区三区视频 | 9久9久9久女女女九九九一九 | 国产精品国产三级国产aⅴ原创 | 国产精品美女 | 成人毛片视频免费 | 亚洲品质自拍视频网站 | 亚洲最大的黄色网址 |