Docker部署乙個goalng web服務

2021-10-09 12:46:04 字數 3029 閱讀 5566

前言

需求:我們使用docker compose來部署乙個用gloang實現的web計數器服務,具體使用到gin框架和go-microv2版本的微服務框架結合實現。使用docker compose來統一部署到linux(contos7)系統上提供服務。

一,docker環境

centos上安裝docker和docker-compose請移步:

docker: docker初步

docker-compose: docker compose介紹

二,編寫乙個go web服務

本專案使用go mod方式實現第三方庫依賴管理。我們建立乙個docker-compose-demo資料夾,在建立乙個server資料夾,在server裡建立mian.go檔案。

}三,編寫 dockerfile 映象構建檔案

在我們的centos伺服器上建立乙個資料夾(webserver),在裡面建立dockerfile檔案。golang專案檔案(docker-compose-demo),我的這邊具體開發目錄如下:

my_project

`-- webserver

|-- docker-compose-demo

| |-- go.mod

| |-- go.sum

| `-- server

| `-- main.go

|-- docker-compose.yml

`-- dockerfile

dockerfile檔案內容如下:

from golang

maintainer ztind

#設定映象工作目錄

workdir /my_project/webserver/docker-compose-demo

#將當前docker-compose-demo目錄下的檔案拷貝到映象目錄中. go.mod,go.sum,server

copy ./docker-compose-demo /my_project/webserver/docker-compose-demo

#開啟gomod模式,並設定**

run go env -w go111module=on

run go env -w goproxy=

#在映象工作目錄的基礎下切換到server目錄下,以備後面的run,cmd指令使用

workdir server

#映象構建時(docker build),編譯main.go檔案生成可執行檔案main

run go build main.go

#容器啟動時(docker run),執行檔案(啟動我們的web服務)

cmd ./main

#外部訪問容器的埠

expose 80

到此處步其實我們已經可以使用docker build -t webserver .命令生成映象檔案,並使用docker run -d -p 80:80 webserver來啟動容器對外提供我們的web計數服務了。

四,編寫docker-compose.yml 顯像管理檔案

docker-compose.yml檔案裡定義我們剛剛生成的映象檔案或其他多個容器檔案,這就使得我們通過docker-compose一條簡單的命令就可以管理多個容器的啟動,停止。大大簡化了傳統專案部署的繁雜步奏和諸多問題

version: "3"

services:

server1:

container_name: server1

build: .

image: webserver

ports:

- "80:80"

build: . 表示構建當前的dockerfile檔案

image: webserver表示構建的映象名字

container_name: server1啟動後容器的名字

docker-compose up 一條命令啟動服務:

#前台執行模式

docker-compose up

#後台執行模式

docker-compose up -d

docker ps 檢視執行的容器列表

[root@vm-0-9-centos docker-compose-demo]# docker ps

container id image command created status ports names

f5cdfb17cce3 webserver "/bin/sh -c ./main" 5 seconds ago up 4 seconds 0.0.0.0:80->80/tcp server1

ok!我們訪問,就能訪問我們的go web計數服務啦。

docker安裝nginx並部署乙個靜態專案

1.搜尋安裝的 nginx 映象 docker search nginx2.在docker hub 中選擇合適的版本後進行 映象拉取 docker pull nginx 1.17 53.拉取完成後執行 nginx 容器 user nginx worker processes 1 error log ...

使用docker部署乙個簡單的c c 程式的方法

一 首先建立乙個 hello world.cpp 檔案 程式 如下 include using namespace std int main 例如我是在我的home路徑下建立乙個dockerfile hello world目錄,裡面新建乙個hello world.cpp原始檔。二 編寫dockerf...

docker 啟動乙個 redis

d 以守護執行緒的方式執行 後台執行 i 以互動模式執行容器 t 為容器重新分配乙個偽輸入終端 p 對映容器服務的 6379 埠到宿主機的 6379 埠。外部可以直接通過宿主機ip 6379 訪問到 redis 的服務。未加 it可能會執行不起來因為,docker容器後台執行,就必須有乙個前台程序,...