Deploy Docker Container with Github Actions - Session 2

Deploy Docker Container with Github Actions - Session 2

Create Dockerfile

lihat dokumentasi Docker Images Golang untuk membuat Dockerfile.

FROM golang:alpine3.16

WORKDIR /app

COPY go.mod ./
COPY go.sum ./
RUN go mod download

COPY *.go ./

RUN go build -o /aplikasi

EXPOSE 8144

ENTRYPOINT ["/aplikasi"]

test build dari lokal apakah running docker file yang sudah dibuat

$go build -o aplikasi
$./aplikasi
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /                         --> main.main.func1 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on 0.0.0.0:8144

selanjut nya build image aplikasi nya.

$docker build . -t golang-apiserver
$docker images
REPOSITORY                        TAG       IMAGE ID       CREATED          SIZE
golang-apiserver                  latest    3eb6a831e1da   30 seconds ago   529MB

coba test running kembali

$docker run -itd -p 8144:8144 golang-apiserver

Create Repository Docker Hub & Access Token

Login ke Docker Hub, login atau sign up jika belum memiliki akun nya. Ketika sudah login kita buat satu repository dengan nama golang-apiserver.

untuk mengakses Docker hub dari Github Actions kita memerlukan acccess token yang di generate dalam Docker Hub. Pilih menu Account Settings > Security > New Access Token.

Create Repository Secret Github

selanjutnya kembali ke github > select repository > settings> Secrets and variables.

pilih New repository secret

pada bagian secret masukan access token yang sudah di berikan di Docker Hub. Access Token ini seperti password untuk masuk ke akun Docker Hub milik kita.

Selanjutnya create new repository secret lagi namun secret yang dari key server instance AWS EC2.

create repository secret lagi untuk ssh user.

create repository secret lagi untuk ssh ip

Setup Github Actions

Masuk ke menu Actions Pilih Go untuk memulai Github Actions. untuk mempelajari github actions workflows bisa ke dokumentasi ini Github Workflows Trigger

ada sedikit perubahan sementara dari file go.yml

# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go

name: Go

on:
  push:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3

    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: 1.19

    - name: Test
      run: go test -v ./...

start commit

jika sudah commit bakalan ada 1 actions workflow yang berjalan, bisa di lihat ke menu Actions.

sampai sini masih sampai base bawaan next kita akan build and push container nya.