国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Docker方式跑Golang程序web服務教程

開關電源芯片 ? 來源:封塵網 ? 作者:久未惹塵埃 ? 2021-08-27 10:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【導讀】今天的文章中作者總結了高效快速部署個人博客的經驗,介紹了打包方面優化對性能的提升。

自從上次博客從 PHP 切換到 GO 語言后,博客上線已經一段時間了,最大的變化就是部署簡單,高效,省去了以前配置 PHP 的部署問題。另外一個就是系統的資源也有明顯降低了。

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

雖說博客沒什么流量,但是一有請求,就會發現網絡,CPU,內存,磁盤等 IO 操作。如果 CPU 暴滿,或者內存暴滿都會導致程序處理或者響應慢。正是因為這樣,有時候使用 Xshell 登陸 ECS 服務器也會卡著。所以最后選擇使用 Docker 方式來跑 Golang 程序。

系統環境: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

基礎鏡像使用了alpine因為它夠小了,5M 多點。這里沒有把 Nginx 也跑在 Docker 上,而是把占內存比較大的 Mariadb 和博客程序跑在 Docker 中。

因為目前云主機是在騰訊云的,所以把鏡像也 PUSH 到騰訊的 Docker 倉庫了。

Dockerfile 文件的內容:這里添加了一個時區,方便讓容器里的時間跟時區一致。同時也把執行程序 blog58 復制的方式添加到鏡像中。

FROM alpine

MAINTAINER swper 《hz328@qq.com》

ADD static/Shanghai /etc/localtime

COPY 。 /blog58

EXPOSE 8000

WORKDIR /blog58

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

打包鏡像

查看當前的目錄結構:

[root@VM_0_5_centos test]# tree -L 2

|-- blog58

| |-- app

| |-- docs

| |-- static

| `-- templates

|-- Dockerfile

`-- Shanghai

打包并傳入到騰訊鏡像倉庫

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

docker push

注意

這里并沒有把 Go 里的靜態資源加入,我是通過掛載的方式加入的。原因一個里面有系統,數據庫帳號的配置。放在外網的 Docker 倉庫不太放心,所以就沒有直接打包到鏡像,同時也為了讓鏡像更小。

沒打包靜態資源就多了一步,需要把靜態的文件,配置文件,模版文件,樣式,jS 等上傳到服務器

WORKDIR 目錄,所以掛載時要注意

關于騰訊云的鏡像,是需要一個認證的,通過帳號申請即可。

啟動容器

1、先把數據庫啟動起來

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

啟動后需要操作一步把之前的數據庫重新導入容器之中。數據庫不存在,需要先創建,這里不詳細說了。

啟動容器時就要把靜態資源掛載:

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

這里把沒有打包進鏡像的配置文件以掛載的方式掛載到容器的相應目錄。/blog58/conf這個目錄就是跟程序配置中的一致,不然無法讀取到配置文件,這樣掛載是有方便的地方,可以通過它修改,如果直接打包到配置文件中就要重新打包鏡像了。

--link 通過它來連接 mariadb 容器,不然兩個容器之間不能連接就不能獲取到數據庫內容了

最后檢查服務是否成功啟動,可以查看宿主機的端口,或者直接請求訪問服務。

[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 :::*

最后查看一下使用容器后的系統資源使用情況。

[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

明顯看到的效果,內存是有比較大的資源空閑,而 CPU 的利用率相應的降低了。

轉自:久未惹塵埃

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

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11279

    瀏覽量

    225007
  • 數據庫
    +關注

    關注

    7

    文章

    4020

    瀏覽量

    68353
  • PHP
    PHP
    +關注

    關注

    0

    文章

    462

    瀏覽量

    28624
  • Docker
    +關注

    關注

    0

    文章

    532

    瀏覽量

    14247

原文標題:Docker 方式跑 Golang 程序 web 服務

文章出處:【微信號:gh_3980db2283cd,微信公眾號:開關電源芯片】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Docker容器網絡模式全解析

    容器網絡是Docker使用中最容易出問題的部分。容器之間怎么通信、容器怎么訪問外網、外部怎么訪問容器內的服務——這三個問題搞不清楚,排查網絡故障就是抓瞎。
    的頭像 發表于 02-26 16:39 ?243次閱讀

    Python運行本地Web服務并實現遠程訪問

    本文介紹使用Python搭建本地Web服務并結合 ZeroNews 實現公網訪問。
    的頭像 發表于 02-06 11:39 ?154次閱讀
    Python運行本地<b class='flag-5'>Web</b><b class='flag-5'>服務</b>并實現遠程訪問

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

    Docker 已成為現代應用部署、開發和基礎設施自動化的核心技術。如果你在服務器或VPS上運行Rocky Linux,學會在Rocky Linux上安裝Docker是你2026年能掌握的最寶貴技能
    的頭像 發表于 01-12 17:21 ?1187次閱讀

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

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

    如何在NVIDIA Jetson AGX Thor上通過Docker高效部署vLLM推理服務

    繼系統安裝與環境配置后,本期我們將繼續帶大家深入 NVIDIA Jetson AGX Thor 的開發教程之旅,了解如何在 Jetson AGX Thor 上,通過 Docker 高效部署 vLLM 推理服務
    的頭像 發表于 11-13 14:08 ?4117次閱讀
    如何在NVIDIA Jetson AGX Thor上通過<b class='flag-5'>Docker</b>高效部署vLLM推理<b class='flag-5'>服務</b>

    香港服務器支持Docker和Kubernetes嗎?

    在云原生技術成為主流的今天,Docker和Kubernetes(K8s)已成為現代化應用開發和部署的事實標準。對于選擇香港服務器的開發者與企業而言,一個核心問題是:香港服務器能否完美支持Doc
    的頭像 發表于 10-21 15:47 ?683次閱讀

    如何快速在云服務器上部署Web環境?

    如何快速在云服務器上部署Web環境
    的頭像 發表于 10-14 14:16 ?662次閱讀

    【HZ-T536開發板免費體驗】5、安裝sqlite3和使用golang讀寫數據庫

    如果想在嵌入式設備上實現簡單的設備管理功能,需要數據庫和服務后端程序服務程序,我更傾向使用golang來實現。 安裝sqlite3,使用
    發表于 08-26 00:04

    docker無法啟用怎么解決?

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

    Docker Volume管理命令大全

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

    Docker Compose的常用命令

    。它通過一個配置文件(docker-compose.yml)來詳細定義多個容器之間的關聯、網絡設置、服務端口等信息。使用一條簡單的命令,就可以輕松啟動、停止和管理這些容器,極大地簡化了多容器應用的部署與管理流程,方便實現應用的快速構建、開發、測試以及部署。
    的頭像 發表于 04-30 13:40 ?1200次閱讀

    Docker基本命令及其用例

    Docker 已迅速成為容器化應用程序的事實標準。作為開發人員或 DevOps 工程師/系統管理員,熟悉 Docker 對于高效部署現代、可移植的應用程序至關重要。
    的頭像 發表于 04-30 10:04 ?706次閱讀

    Docker常用命令大全

    Docker 是一種開源的應用容器引擎,廣泛應用于開發、部署和運行分布式應用。掌握 Docker 常用命令對于開發人員和運維人員來說非常重要。本文將為大家整理常用的Docker 命令,并按照功能分為多個部分,幫助你高效使用
    的頭像 發表于 04-22 12:47 ?867次閱讀

    【技術案例】Android in Docker

    Docker介紹Docker是一個開源的容器化平臺,用于打包、分發和運行應用程序。它通過將應用及其所有依賴打包到獨立的容器中,確保應用在不同環境中一致運行。Docker提供快速部署、隔
    的頭像 發表于 04-02 16:33 ?1761次閱讀
    【技術案例】Android in <b class='flag-5'>Docker</b>

    基于Docker鏡像逆向生成Dockerfile

    在本文中, 我們將通過理解Docker鏡像如何存儲數據, 以及如何使用工具查看鏡像方方面面的信息來逆向工程一個Docker鏡像; 以及如何使用Python的Docker API來構建一個類似Dedockify的工具來創建Dock
    的頭像 發表于 03-10 09:45 ?1550次閱讀
    基于<b class='flag-5'>Docker</b>鏡像逆向生成Dockerfile