女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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 《[email protected]

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

    文章

    11033

    瀏覽量

    215978
  • 數據庫
    +關注

    關注

    7

    文章

    3900

    瀏覽量

    65769
  • PHP
    PHP
    +關注

    關注

    0

    文章

    454

    瀏覽量

    27271
  • Docker
    +關注

    關注

    0

    文章

    510

    瀏覽量

    12695

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【技術案例】Android in Docker

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

    AWTK-WEB 快速入門(6) - JS WebSocket 應用程序

    WebSocket可以實現雙向通信,適合實時通信場景。本文介紹一下使用Javacript語言開發AWTK-WEB應用程序,并用WebSocket與服務器通訊。用AWTKDesigner新建一個應用程
    的頭像 發表于 02-26 11:42 ?300次閱讀
    AWTK-<b class='flag-5'>WEB</b> 快速入門(6) - JS WebSocket 應用<b class='flag-5'>程序</b>

    AWTK-WEB 快速入門(5) - C 語言 WebSocket 應用程序

    導讀WebSocket可以實現雙向通信,適合實時通信場景。本文介紹一下使用C語言開發AWTK-WEB應用程序,并用WebSocket與服務器通訊。用AWTKDesigner新建一個應用程序
    的頭像 發表于 02-19 11:49 ?377次閱讀
    AWTK-<b class='flag-5'>WEB</b> 快速入門(5) - C 語言 WebSocket 應用<b class='flag-5'>程序</b>

    華為 FlexusX 與 Docker+Nginx 的高效整合之路

    前言 華為 FlexusX 攜手 Docker+Nginx,高效整合,云端性能再升級!FlexusX 服務器,依托華為強大的技術實力,為 Docker 容器與 Nginx 服務器提供了
    的頭像 發表于 01-23 17:55 ?286次閱讀
    華為 FlexusX 與 <b class='flag-5'>Docker</b>+Nginx 的高效整合之路

    AWTK-WEB 快速入門(4) - JS Http 應用程序

    導讀XMLHttpRequest改變了Web應用程序服務器交換數據的方式,fetch是其繼任者。本文介紹一下如何使用JS語言開發AWTK-WEB
    的頭像 發表于 01-22 11:31 ?375次閱讀
    AWTK-<b class='flag-5'>WEB</b> 快速入門(4) - JS Http 應用<b class='flag-5'>程序</b>

    服務器 Flexus X 實例,Docker 集成搭建 DVWA 靶場

    DVWA 靶場是一個專為安全專業人員、開發人員和學生設計的網絡安全學習和實踐平臺,模擬了一個典型的 Web 應用程序,并故意包含多種常見的 Web 安全漏洞,如 SQL 注入、跨站腳本攻擊(XSS
    的頭像 發表于 01-13 18:17 ?381次閱讀
    云<b class='flag-5'>服務</b>器 Flexus X 實例,<b class='flag-5'>Docker</b> 集成搭建 DVWA 靶場

    服務器 Flexus X 實例,Docker 集成搭建 YesPlayMusic 網易云音樂播放器

    YesPlayMusic 是一款基于 Electron 的開源網易云音樂桌面播放器,以簡潔的界面和豐富的功能受到了許多用戶的喜愛,特別是對于希望在桌面上享受網易云音樂服務的用戶 Docker 安裝并
    的頭像 發表于 01-13 18:17 ?488次閱讀
    云<b class='flag-5'>服務</b>器 Flexus X 實例,<b class='flag-5'>Docker</b> 集成搭建 YesPlayMusic 網易云音樂播放器

    服務器 Flexus X 實例,Docker 集成搭建 Grafana 開源數據可視化平臺

    的用戶界面,用戶可以輕松創建和自定義動態儀表板,以實時展示關鍵指標和數據趨勢 華為云端口放行 ??服務器放行對應端口 9955 Docker 安裝并配置鏡像加速 1、購買華為云 Flexus X 實例
    的頭像 發表于 01-13 15:50 ?374次閱讀
    云<b class='flag-5'>服務</b>器 Flexus X 實例,<b class='flag-5'>Docker</b> 集成搭建 Grafana 開源數據可視化平臺

    服務器 Flexus X 實例,Docker 集成搭建 NGINX

    Docker 集成搭建 NGINX 1、購買華為云 Flexus X 實例 Flexus云服務器X實例-華為云 (huaweicloud.com) ? 2、docker 安裝 yum?install
    的頭像 發表于 01-13 11:09 ?892次閱讀
    云<b class='flag-5'>服務</b>器 Flexus X 實例,<b class='flag-5'>Docker</b> 集成搭建 NGINX

    docker-compose配置文件內容詳解以及常用命令介紹

    需要的所有服務(例如:Web服務器、數據庫、緩存等)并輕松管理它們。 Docker Compose 使用的三個步驟: 使用 Dockerfile 定義應用
    的頭像 發表于 12-02 09:29 ?4101次閱讀
    <b class='flag-5'>docker</b>-compose配置文件內容詳解以及常用命令介紹

    AWTK-WEB 快速入門(1) - C 語言應用程序

    導讀AWTK可以使用相同的技術棧開發各種平臺的應用程序。有時我們需要使用Web界面與設備進行交互,本文介紹一下如何使用C語言開發AWTK-WEB應用程序。用AWTKDesigner新建
    的頭像 發表于 11-27 11:46 ?601次閱讀
    AWTK-<b class='flag-5'>WEB</b> 快速入門(1) - C 語言應用<b class='flag-5'>程序</b>

    Docker運行環境安裝

    作者:京東科技 林中 Docker是一個開放的平臺,用于開發、發布和運行應用程序Docker分離了應用程序和運行應用的基礎設施,從而實現了軟件的快速交付。利用
    的頭像 發表于 10-29 11:28 ?559次閱讀

    【米爾NXP i.MX 93開發板試用評測】4、使用golang搭建Modbus 服務

    負責處理來自客戶端(通常稱為Modbus客戶端或從站)的請求,并根據請求提供相應的數據或執行操作。 快速開發modbus服務器 可以使用golang快速部署一個modbus服務器。我們先在開發板上安裝
    發表于 09-21 22:51

    ARM平臺實現Docker容器技術

    及依賴包到一個可移植的鏡像中,然后發布到任何流行的Linux或Windows機器上,亦可實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。使用Docker,可像管理應用程序一樣管理基礎結構
    發表于 07-17 11:05

    華納云:java web和java有什么區別java web和java有什么區別

    Java Web和Java是兩個不同的概念,它們在功能、用途和實現方式上存在一些區別,下面將詳細介紹它們之間的區別。 1. 功能和用途: – Java是一種編程語言,它提供了一種用于開發各種應用程序
    的頭像 發表于 07-16 13:35 ?1350次閱讀
    華納云:java <b class='flag-5'>web</b>和java有什么區別java <b class='flag-5'>web</b>和java有什么區別