iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
DevOps

用K8s打造你的Youtube系列 第 3

使用 Docker 建立 container

  • 分享至 

  • xImage
  •  

我們大家常說的container,其實就是一個實踐微服務架構的方法。藉由container,你就可以專心開發服務,不必擔心依附元件。

Docker 介紹

為了實作container,我們在這邊使用 Docker。Docker應用容器技術(container),並將應用程式轉為container。你可以想像他是一個自己世界的盒子,你可以把自己寫的服務放進這個盒子。帶著這個盒子,你在你同學的電腦、學校電腦,只要有docker都可以直接運行,不用煩惱環境問題。

Docker有三個重要概念

  1. image(映像檔)

    image就是這個盒子的藍圖,這盒子裡面的世界長怎樣(環境)、可以跟誰溝通(port)都會變成image。而要把專案放進盒子,我們就需要一個定義的檔案,也叫做Dockerfile。

  2. container(容器)

    container就是將image實例化後的真正在跑的服務。

  3. Repository(倉庫)

    你可以將盒子的藍圖放在倉庫,如果倉庫對誰公開,誰就可以拿到這個盒子。

安裝 Docker

首先我們先依照裝置安裝docker

https://www.docker.com/

terminal 確認docker版本有出來

$ docker -v

Docker version 20.10.17, build 100c70180f

Docker 建立 image

接下來我們要使用Dockerfile來定義我們的image要長怎樣。

// Dockerfile
# Dockerfile References: https://docs.docker.com/engine/reference/builder/

# Start from the latest golang base image
FROM golang:1.18 as builder

# Set the Current Working Directory inside the container
WORKDIR /app

# Copy go mod and sum files
COPY go.mod go.sum ./

# Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed
RUN go mod download

# Copy the source from the current directory to the Working Directory inside the container
COPY . .

# Build the Go app
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .

######## Start a new stage from scratch #######
FROM alpine:latest  

RUN apk --no-cache add ca-certificates

WORKDIR /root/

# Copy the Pre-built binary file from the previous stage
COPY --from=builder /app/main .

# Expose port 8080 to the outside world
EXPOSE 8090

RUN chmod +x ./main

# Command to run the executable
CMD ["./main"]

這邊我們來分步說明一下,因為要運行程式,還是需要環境,所以我們從官方引用 Golang:1.18

FROM golang:1.18 as builder
  • workdir是指定當前目錄,如果目錄不存在,他會自動幫你建立
  • copy是指將現有local的檔案複製一份到image
  • EXPOSE 是這個container會對外開的port
  • 單獨跑run就是會執行某行程式碼
  • CMD就是最後會運行的指令

再來,我們把昨天的程式碼運行下列指令,讓他成為image。

docker build -t ooii8929/youtube-go --platform linux/amd64 .

你可以使用 docker image ls 查看

docker image ls
REPOSITORY            TAG       IMAGE ID       CREATED       SIZE
ooii8929/youtube-go   latest    82cd8856eeb9   2 weeks ago   1.01GB

上一篇
GO 建立初始專案
下一篇
Docker Container 後續應用
系列文
用K8s打造你的Youtube13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言