91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Docker方式跑Golang程序web服務(wù)教程

開(kāi)關(guān)電源芯片 ? 來(lái)源:封塵網(wǎng) ? 作者:久未惹塵埃 ? 2021-08-27 10:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【導(dǎo)讀】今天的文章中作者總結(jié)了高效快速部署個(gè)人博客的經(jīng)驗(yàn),介紹了打包方面優(yōu)化對(duì)性能的提升。

自從上次博客從 PHP 切換到 GO 語(yǔ)言后,博客上線已經(jīng)一段時(shí)間了,最大的變化就是部署簡(jiǎn)單,高效,省去了以前配置 PHP 的部署問(wèn)題。另外一個(gè)就是系統(tǒng)的資源也有明顯降低了。

首先,本博客使用的云主機(jī)是 1 核 1G 內(nèi)存,之前就是一個(gè) Nginx+Mysql+一個(gè) Golang 程序就把內(nèi)存耗剩 20M 左右。自己還添加了一個(gè)虛擬交換內(nèi)存 Swap 1G 的空間,避免內(nèi)存用完,卡一點(diǎn)都比服務(wù)宕掉好。

雖說(shuō)博客沒(méi)什么流量,但是一有請(qǐng)求,就會(huì)發(fā)現(xiàn)網(wǎng)絡(luò),CPU,內(nèi)存,磁盤等 IO 操作。如果 CPU 暴滿,或者內(nèi)存暴滿都會(huì)導(dǎo)致程序處理或者響應(yīng)慢。正是因?yàn)檫@樣,有時(shí)候使用 Xshell 登陸 ECS 服務(wù)器也會(huì)卡著。所以最后選擇使用 Docker 方式來(lái)跑 Golang 程序。

系統(tǒng)環(huán)境:CentOS Linux release 7.3.1611 (Core) Docker-ce: 19.03.1

使用以下的鏡像:

[root@VM_0_5_centos ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

ccr.ccs.tencentyun.com/swper/58jb v1 2fc4f9bb90c8 13 days ago 35.8MB

blog latest fd226a862210 13 days ago 5.58MB

alpine latest 961769676411 2 weeks ago 5.58MB

mariadb latest 99c1098d5884 3 weeks ago 355MB

基礎(chǔ)鏡像使用了alpine因?yàn)樗鼔蛐×耍?M 多點(diǎn)。這里沒(méi)有把 Nginx 也跑在 Docker 上,而是把占內(nèi)存比較大的 Mariadb 和博客程序跑在 Docker 中。

因?yàn)槟壳霸浦鳈C(jī)是在騰訊云的,所以把鏡像也 PUSH 到騰訊的 Docker 倉(cāng)庫(kù)了。

Dockerfile 文件的內(nèi)容:這里添加了一個(gè)時(shí)區(qū),方便讓容器里的時(shí)間跟時(shí)區(qū)一致。同時(shí)也把執(zhí)行程序 blog58 復(fù)制的方式添加到鏡像中。

FROM alpine

MAINTAINER swper 《hz328@qq.com》

ADD static/Shanghai /etc/localtime

COPY 。 /blog58

EXPOSE 8000

WORKDIR /blog58

CMD [“sh”,“-c”,“/blog58/app”]

打包鏡像

查看當(dāng)前的目錄結(jié)構(gòu):

[root@VM_0_5_centos test]# tree -L 2

|-- blog58

| |-- app

| |-- docs

| |-- static

| `-- templates

|-- Dockerfile

`-- Shanghai

打包并傳入到騰訊鏡像倉(cāng)庫(kù)

docker build 。 -t ccr.ccs.tencentyun.com/swper/58jb:v1

docker push

注意

這里并沒(méi)有把 Go 里的靜態(tài)資源加入,我是通過(guò)掛載的方式加入的。原因一個(gè)里面有系統(tǒng),數(shù)據(jù)庫(kù)帳號(hào)的配置。放在外網(wǎng)的 Docker 倉(cāng)庫(kù)不太放心,所以就沒(méi)有直接打包到鏡像,同時(shí)也為了讓鏡像更小。

沒(méi)打包靜態(tài)資源就多了一步,需要把靜態(tài)的文件,配置文件,模版文件,樣式,jS 等上傳到服務(wù)器

WORKDIR 目錄,所以掛載時(shí)要注意

關(guān)于騰訊云的鏡像,是需要一個(gè)認(rèn)證的,通過(guò)帳號(hào)申請(qǐng)即可。

啟動(dòng)容器

1、先把數(shù)據(jù)庫(kù)啟動(dòng)起來(lái)

docker run -d --name mariadb -p 3306:3306 -v /data/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=數(shù)據(jù)庫(kù)密碼 --privileged=true --restart unless-stopped mariadb:latest

啟動(dòng)后需要操作一步把之前的數(shù)據(jù)庫(kù)重新導(dǎo)入容器之中。數(shù)據(jù)庫(kù)不存在,需要先創(chuàng)建,這里不詳細(xì)說(shuō)了。

啟動(dòng)容器時(shí)就要把靜態(tài)資源掛載:

docker run -d --name app --restart=always -p 8000:8000 -v /data/blog58/conf:/blog58/conf --link mariadb:mariadb blog

這里把沒(méi)有打包進(jìn)鏡像的配置文件以掛載的方式掛載到容器的相應(yīng)目錄。/blog58/conf這個(gè)目錄就是跟程序配置中的一致,不然無(wú)法讀取到配置文件,這樣掛載是有方便的地方,可以通過(guò)它修改,如果直接打包到配置文件中就要重新打包鏡像了。

--link 通過(guò)它來(lái)連接 mariadb 容器,不然兩個(gè)容器之間不能連接就不能獲取到數(shù)據(jù)庫(kù)內(nèi)容了

最后檢查服務(wù)是否成功啟動(dòng),可以查看宿主機(jī)的端口,或者直接請(qǐng)求訪問(wèn)服務(wù)。

[root@VM_0_5_centos ]# ss -lnt

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 *:80 *:*

LISTEN 0 128 *:443 *:*

LISTEN 0 128 :::8000 :::*

LISTEN 0 128 :::3306 :::*

最后查看一下使用容器后的系統(tǒng)資源使用情況。

[root@VM_0_5_centos]# free -m

total used free shared buff/cache available

Mem: 985 200 216 0 568 666

Swap: 1023 310 713

明顯看到的效果,內(nèi)存是有比較大的資源空閑,而 CPU 的利用率相應(yīng)的降低了。

轉(zhuǎn)自:久未惹塵埃

58jb.com/html/goweb-run-on-docker.html

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11277

    瀏覽量

    224949
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    4019

    瀏覽量

    68337
  • PHP
    PHP
    +關(guān)注

    關(guān)注

    0

    文章

    462

    瀏覽量

    28621
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    532

    瀏覽量

    14242

原文標(biāo)題:Docker 方式跑 Golang 程序 web 服務(wù)

文章出處:【微信號(hào):gh_3980db2283cd,微信公眾號(hào):開(kāi)關(guān)電源芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Docker容器網(wǎng)絡(luò)模式全解析

    容器網(wǎng)絡(luò)是Docker使用中最容易出問(wèn)題的部分。容器之間怎么通信、容器怎么訪問(wèn)外網(wǎng)、外部怎么訪問(wèn)容器內(nèi)的服務(wù)——這三個(gè)問(wèn)題搞不清楚,排查網(wǎng)絡(luò)故障就是抓瞎。
    的頭像 發(fā)表于 02-26 16:39 ?230次閱讀

    Python運(yùn)行本地Web服務(wù)并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)

    本文介紹使用Python搭建本地Web服務(wù)并結(jié)合 ZeroNews 實(shí)現(xiàn)公網(wǎng)訪問(wèn)。
    的頭像 發(fā)表于 02-06 11:39 ?149次閱讀
    Python運(yùn)行本地<b class='flag-5'>Web</b><b class='flag-5'>服務(wù)</b>并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)

    如何在2026年Rocky Linux(8、9和10)上安裝Docker

    Docker 已成為現(xiàn)代應(yīng)用部署、開(kāi)發(fā)和基礎(chǔ)設(shè)施自動(dòng)化的核心技術(shù)。如果你在服務(wù)器或VPS上運(yùn)行Rocky Linux,學(xué)會(huì)在Rocky Linux上安裝Docker是你2026年能掌握的最寶貴技能
    的頭像 發(fā)表于 01-12 17:21 ?1144次閱讀

    使用 Docker 一鍵部署 PaddleOCR-VL: 新手保姆級(jí)教程

    → 拉起 PaddleOCR-VL 服務(wù) → 本機(jī)用 HTTP 調(diào)用 /layout-parsing 接口通文檔解析。 一,PaddleOCR-VL是什么、為什么用 Docker
    的頭像 發(fā)表于 12-18 18:26 ?6421次閱讀
    使用 <b class='flag-5'>Docker</b> 一鍵部署 PaddleOCR-VL: 新手保姆級(jí)教程

    如何在NVIDIA Jetson AGX Thor上通過(guò)Docker高效部署vLLM推理服務(wù)

    繼系統(tǒng)安裝與環(huán)境配置后,本期我們將繼續(xù)帶大家深入 NVIDIA Jetson AGX Thor 的開(kāi)發(fā)教程之旅,了解如何在 Jetson AGX Thor 上,通過(guò) Docker 高效部署 vLLM 推理服務(wù)。
    的頭像 發(fā)表于 11-13 14:08 ?4111次閱讀
    如何在NVIDIA Jetson AGX Thor上通過(guò)<b class='flag-5'>Docker</b>高效部署vLLM推理<b class='flag-5'>服務(wù)</b>

    香港服務(wù)器支持Docker和Kubernetes嗎?

    在云原生技術(shù)成為主流的今天,Docker和Kubernetes(K8s)已成為現(xiàn)代化應(yīng)用開(kāi)發(fā)和部署的事實(shí)標(biāo)準(zhǔn)。對(duì)于選擇香港服務(wù)器的開(kāi)發(fā)者與企業(yè)而言,一個(gè)核心問(wèn)題是:香港服務(wù)器能否完美支持Doc
    的頭像 發(fā)表于 10-21 15:47 ?679次閱讀

    如何快速在云服務(wù)器上部署Web環(huán)境?

    如何快速在云服務(wù)器上部署Web環(huán)境
    的頭像 發(fā)表于 10-14 14:16 ?656次閱讀

    【HZ-T536開(kāi)發(fā)板免費(fèi)體驗(yàn)】5、安裝sqlite3和使用golang讀寫數(shù)據(jù)庫(kù)

    如果想在嵌入式設(shè)備上實(shí)現(xiàn)簡(jiǎn)單的設(shè)備管理功能,需要數(shù)據(jù)庫(kù)和服務(wù)后端程序。服務(wù)程序,我更傾向使用golang來(lái)實(shí)現(xiàn)。 安裝sqlite3,使用
    發(fā)表于 08-26 00:04

    docker無(wú)法啟用怎么解決?

    mengxing@mengxing-virtual-machine:/etc/docker$ sudo systemctl daemon-reload
    發(fā)表于 06-23 07:17

    Docker Volume管理命令大全

    Docker Volume管理命令大全
    的頭像 發(fā)表于 05-28 17:14 ?891次閱讀

    Docker Compose的常用命令

    。它通過(guò)一個(gè)配置文件(docker-compose.yml)來(lái)詳細(xì)定義多個(gè)容器之間的關(guān)聯(lián)、網(wǎng)絡(luò)設(shè)置、服務(wù)端口等信息。使用一條簡(jiǎn)單的命令,就可以輕松啟動(dòng)、停止和管理這些容器,極大地簡(jiǎn)化了多容器應(yīng)用的部署與管理流程,方便實(shí)現(xiàn)應(yīng)用的快速構(gòu)建、開(kāi)發(fā)、測(cè)試以及部署。
    的頭像 發(fā)表于 04-30 13:40 ?1196次閱讀

    Docker基本命令及其用例

    Docker 已迅速成為容器化應(yīng)用程序的事實(shí)標(biāo)準(zhǔn)。作為開(kāi)發(fā)人員或 DevOps 工程師/系統(tǒng)管理員,熟悉 Docker 對(duì)于高效部署現(xiàn)代、可移植的應(yīng)用程序至關(guān)重要。
    的頭像 發(fā)表于 04-30 10:04 ?704次閱讀

    Docker常用命令大全

    Docker 是一種開(kāi)源的應(yīng)用容器引擎,廣泛應(yīng)用于開(kāi)發(fā)、部署和運(yùn)行分布式應(yīng)用。掌握 Docker 常用命令對(duì)于開(kāi)發(fā)人員和運(yùn)維人員來(lái)說(shuō)非常重要。本文將為大家整理常用的Docker 命令,并按照功能分為多個(gè)部分,幫助你高效使用
    的頭像 發(fā)表于 04-22 12:47 ?859次閱讀

    【技術(shù)案例】Android in Docker

    Docker介紹Docker是一個(gè)開(kāi)源的容器化平臺(tái),用于打包、分發(fā)和運(yùn)行應(yīng)用程序。它通過(guò)將應(yīng)用及其所有依賴打包到獨(dú)立的容器中,確保應(yīng)用在不同環(huán)境中一致運(yùn)行。Docker提供快速部署、隔
    的頭像 發(fā)表于 04-02 16:33 ?1755次閱讀
    【技術(shù)案例】Android in <b class='flag-5'>Docker</b>

    docker-proxy鏡像加速倉(cāng)庫(kù)

    自建多平臺(tái)容器鏡像代理服務(wù),支持 Docker Hub, GitHub, Google, k8s, Quay, Microsoft 等鏡像倉(cāng)庫(kù)。
    的頭像 發(fā)表于 03-06 16:06 ?1024次閱讀
    <b class='flag-5'>docker</b>-proxy鏡像加速倉(cāng)庫(kù)