最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker部署Golang服務(wù)的實現(xiàn)步驟

 更新時間:2024年01月23日 09:43:19   作者:John_rush  
不管是開發(fā)還是生產(chǎn)環(huán)境,通過docker方式部署服務(wù)都是一種不錯的選擇,本文主要介紹了Docker部署Golang服務(wù)的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下

不管是開發(fā)還是生產(chǎn)環(huán)境,通過 docker 方式部署服務(wù)都是一種不錯的選擇,能夠解決不同開發(fā)環(huán)境一致性的問題。

Dockerfile 構(gòu)建 Go 運用環(huán)境

在項目根目錄下添加 Dockerfile 文件:

FROM golang:alpine

# 在容器內(nèi)部設(shè)置環(huán)境變量
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

# 設(shè)置后續(xù)指令的工作目錄
WORKDIR /build

# 復(fù)制項目中的 go.mod 和 go.sum文件并下載依賴信息
COPY go.mod .
COPY go.sum .
RUN go mod download

# 將代碼復(fù)制到容器中
COPY . .

# 將代碼編譯成二進制可執(zhí)行文件
RUN go build -o go-api .

WORKDIR /dist

RUN cp /build/go-api .

COPY ./config ./config

# 需要運行的命令
ENTRYPOINT ["/dist/go-api", "/dist/config/env.yml"]

如果需要縮小鏡像大小,則可以用以下方式進行構(gòu)建

FROM golang:alpine AS builder

# 在容器內(nèi)部設(shè)置環(huán)境變量
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

# 設(shè)置后續(xù)指令的工作目錄
WORKDIR /build

# 復(fù)制項目中的 go.mod 和 go.sum文件并下載依賴信息
COPY go.mod .
COPY go.sum .
RUN go mod download

# 將代碼復(fù)制到容器中
COPY . .

# 將代碼編譯成二進制可執(zhí)行文件
RUN go build -o go-api .


# 創(chuàng)建一個小鏡像
#FROM scratch
FROM debian:stretch-slim

COPY ./config /config

# 從builder鏡像中把 /build/go-api 拷貝到當(dāng)前目錄
COPY --from=builder /build/go-api /

# 需要運行的命令
ENTRYPOINT ["/go-api", "config/env.yml"]

注:鏡像scratch沒有bash,會導(dǎo)致無法通過docker exec進入容器,建議直接改成debian:stretch-slim鏡像

構(gòu)建 docker 鏡像 go-web-app

$ docker build -t go-web-app .

# 查看鏡像
$ docker images

啟動容器來運行鏡像:

$ docker run -p 8888:8088 go-web-app

# 后臺啟動
$ $ docker run -p 8888:8088 -d go-web-app

# 查看容器
$ docker ps -a
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                    NAMES
959ee47f203b   go-web-app   "/go-api config/env.…"   23 seconds ago   Up 22 seconds   0.0.0.0:8888->8088/tcp   nostalgic_mclean

標(biāo)志位-p用來定義端口綁定,容器中g(shù)o服務(wù)端口為 8088,綁定到本機端口 8888,接下來就可以通過http://127.0.0.1:8888進行訪問了。

Mysql 容器

拉取 Mysql 鏡像:

# 拉取最新版本 mysql,也可以指定版本
$ docker pull mysql:latest

# 查看鏡像
$ docker images

運行 Mysql 容器:

$ docker run --name mysql -p 8306:3306 -e MYSQL_ROOT_PASSWORD=root123456 -v ~/docker-data/mysql:/var/lib/mysql -d mysql:latest

# 查看容器
$ docker ps -a
  • --name mysql-latest:容器命名為 mysql-latest
  • -p 8306:3306:映射容器服務(wù)的 3306 端口到宿主機的 8306 端口,外部主機可以直接通過 宿主機ip:8306 訪問到MySQL服務(wù)
  • -e MYSQL_ROOT_PASSWORD=root123456:設(shè)置 MySQL 服務(wù) root 用戶密碼
  • -v /Users/john/docker-data/mysql:/var/lib/mysql:表示將宿主機的/Users/john/docker-data/mysql卷映射到容器里的 /var/lib/mysql卷中,為了把數(shù)據(jù)保存在宿主機中,防止容器刪掉就沒了
  • -d:后臺運行
  • mysql:latest:使用這個mysql鏡像

連通性測試:

進入 docker 容器連接 mysql:

# 進入容器
$ docker exec -it mysql-latest /bin/sh
# 連接 mysql
$ mysql -uroot -proot123456 -h 127.0.0.1 -P3306

或者本機可以通過 navicat 等工具進行連接。

Redis 容器

拉取 Redis 鏡像:

$ docker pull redis

# 查看鏡像
$ docker images

運行 Redis 容器:

$ docker run --name redis -v ~/docker-data/redis:/usr/local/redis -p 6379:6379 -d redis:latest --requirepass "root123456"

# 查看容器
$ docker ps -a

其他參數(shù)同mysql配置,--requirepass 用來設(shè)置 Redis 密碼

連通性測試:

直接在本地使用 redis-cli 測試 redis 連通性:

> redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth root123456
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

進入容器:

> docker exec -it redis /bin/sh
# redis-cli -p 6379
127.0.0.1:6379> auth root123456
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
# exit

修改配置

由于要連接不同容器內(nèi)的數(shù)據(jù)庫,需要修改項目數(shù)據(jù)庫配置HOST地址為容器名,這里以我的項目配置 env.yml為例子:

# MySQL 配置
mysql:
#  host: 127.0.0.1 # 服務(wù)器地址
  host: mysql
  port: 3306 # 端口
  db_name: test # 數(shù)據(jù)庫名稱
  username: root # 數(shù)據(jù)庫用戶名
  password: root123456 # 數(shù)據(jù)庫密碼
  ...
  
# Redis 配置
redis:
#  host: 127.0.0.1 # 地址
  host: redis
  port: 6379 # 端口
  db: 0
  password: root123456 # 密碼

然后重新 build Go服務(wù)鏡像:

$ docker build -t go-web-app .

重新啟動容器,并使用--link關(guān)聯(lián)Mysql、Redis容器:

$ docker run --name go-api --link=mysql:mysql --link=redis:redis -p 8888:8088 -d go-web-app

注:使用這種方式構(gòu)建環(huán)境,每次都需要單獨啟動Mysql、Redis、go服務(wù)容器,并通過 --link關(guān)聯(lián)容器

到此這篇關(guān)于Docker部署Golang服務(wù)的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker部署Go服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入解析docker三種網(wǎng)絡(luò)模式

    深入解析docker三種網(wǎng)絡(luò)模式

    這篇文章主要介紹了docker三種網(wǎng)絡(luò)模式,分別是bridge橋接模式,host主機模式,none無網(wǎng)絡(luò)模式,每種模式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Docker容器日志查看與清理的方法(親測有效)

    Docker容器日志查看與清理的方法(親測有效)

    這篇文章主要介紹了Docker容器日志查看與清理的方法(親測有效),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • jenkins如何進行自動化部署

    jenkins如何進行自動化部署

    這篇文章主要介紹了jenkins如何進行自動化部署問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 淺談Docker鏡像列表中的none:none是什么

    淺談Docker鏡像列表中的none:none是什么

    這篇文章主要介紹了Docker鏡像列表中的none:none問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker Dockerfile的使用實例

    Docker Dockerfile的使用實例

    這篇文章主要介紹了Docker Dockerfile的使用實例的相關(guān)資料,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • zabbix監(jiān)控docker應(yīng)用配置

    zabbix監(jiān)控docker應(yīng)用配置

    今天通過本文給大家分享zabbix監(jiān)控docker容器的原理及部署的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07
  • python腳本在docker上運行的方法

    python腳本在docker上運行的方法

    在本篇文章里小編給各位分享的是關(guān)于python腳本在docker上運行的方法內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • 從零搭建到生產(chǎn)環(huán)境配置詳解Docker部署MongoDB的完整流程

    從零搭建到生產(chǎn)環(huán)境配置詳解Docker部署MongoDB的完整流程

    在容器化技術(shù)日益普及的今天,使用?Docker?部署?MongoDB?已經(jīng)成為開發(fā)和生產(chǎn)環(huán)境的標(biāo)配方案,本文詳細(xì)介紹了使用Docker部署MongoDB的全過程,希望可以帶大家全面掌握?Docker?部署?MongoDB?的核心技能
    2026-05-05
  • CentOS 7下設(shè)置Docker代理(Linux下Systemd服務(wù)的環(huán)境變量配置)

    CentOS 7下設(shè)置Docker代理(Linux下Systemd服務(wù)的環(huán)境變量配置)

    本文給大家分享Linux下Systemd服務(wù)的環(huán)境變量配置方法,此示例將覆蓋默認(rèn)docker.service文件,對CentOS 7下設(shè)置Docker代理的相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • docker entrypoint入口文件詳解

    docker entrypoint入口文件詳解

    這篇文章主要介紹了docker entrypoint入口文件詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論

贺州市| 平舆县| 石景山区| 陆丰市| 德钦县| 连南| 泊头市| 扎兰屯市| 临澧县| 德江县| 瑞丽市| 腾冲县| 伊通| 德钦县| 蓝山县| 孝感市| 汪清县| 贵溪市| 衡水市| 沙湾县| 渝中区| 汉中市| 大化| 临澧县| 青州市| 新郑市| 朔州市| 嘉禾县| 阜平县| 蓝山县| 阿克陶县| 涟源市| 喀喇沁旗| 自贡市| 金溪县| 陵水| 资阳市| 永泰县| 城固县| 芮城县| 昌邑市|