🤗

docker runで名刺つくろうぜ!

2023/10/27に公開

皆さん名刺を渡しているとき何を使ってますか?

  • 紙名刺?
  • npm?
  • 専用アプリ?

いやいやw今やDocker使ってないエンジニアなんていないんだしDockerでええやん!(偏見)

ということで実際Docker runをしたら自己紹介が出来るようにしょうとおもいます。

完成形

開発環境

  • CachyOS (ArchLinux)
  • Golang -1.20
  • docker-ceの環境
    今回はGo言語を扱って書いていきますが基本どの言語でもかけるとおもいます。

とりあえずコード書いてみよう

main.go
package main

import "fmt"

func main(){
  fmt.Println("はろー世界")
}
#バイナリ形式にビルド
go run main -o bussiness-card
Dockerfile
FROM scratch
COPY bussiness-card .
CMD ["/bussiness-card"]

それ実行じゃ!

docker build -t bc .
docker run bc:latest


おお,ええんとちゃう?

実際それっぽくしてみよう

コンソールに出力させてるだけなのでエスケープシーケンスとか色々ついかして…
https://github.com/murasame29/docker-bussiness-card
こんな感じにすれば。。。

それっぽくなった。

docker hubにあげておこう

# まずはDockerHubにログインする
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: murasame29 #自分のID
Password:
Login Succeeded

# ログイン成功したら次はビルドしたイメージをプッシュする
$ docker push murasame29/bussiness-card #自分のビルドしたtagを入力
Using default tag: latest
The push refers to repository [docker.io/murasame29/bussiness-card]
86563e1b478d: Pushed 
latest: digest: sha256:9e0edf1b80c6e3d886a70729ed15d514cc4bcf3de5ff2c208379bb2b6496b0e6 size: 528

こうなったらok!
そしたら自分のDockerHubのレジストリに登録されてるはずなので別クライアントとかで実行してみよう!

docker run murasame29/bussiness-card


正常に表示されたら成功!

変更していきたいしCIまわしちゃう?

とはいえ、変更してこの作業毎回やるのは面倒くさい
じゃあどうするか?そう!リポジトリにpushしたら自動でやればいいんですよ!!
ということでやっていこう

mkdir -p .github/workflows
touch deploy.yml
name: Push to Docker Hub

on:
  push:
    branches:
      - main
jobs:
  build:
    name: build binary
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: login docker hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      
      - name: build and push
        run: |
          docker build -t ${{ secrets.DOCKER_USERNAME }}/bussiness-card .
          docker push ${{ secrets.DOCKER_USERNAME }}/bussiness-card

まぁとりあえずビルドしてプッシュするまでなのでこんな感じで

適当な変更してみよう

main.go
package main

import (
	"fmt"

	"github.com/murasame29/docker-bussiness-card/selfintro"
	"github.com/murasame29/docker-bussiness-card/utils"
)

func main() {
	intro := selfintro.NewSelfIntro()
	intro.AddTag(fmt.Sprintf("👋 %s名前%s", utils.FontColor(185, 80, 25), utils.Reset)).AddContent("I'm Murasame29.")
	intro.AddTag(fmt.Sprintf("😼 %sGitHub%s", utils.FontColor(35, 134, 54), utils.Reset)).AddContent("https://github.com/murasame29")
	intro.AddTag(fmt.Sprintf("📫 %sEmail%s", utils.FontColor(35, 134, 54), utils.Reset)).AddContent("oogiriminister@gmail.com")
	intro.AddTag(fmt.Sprintf("🐦 %sTwitter%s", utils.FontColor(100, 100, 255), utils.Reset)).AddContent("https://twitter.com/fresh_salmon256")
	intro.AddTag(fmt.Sprintf("🍴 %s好きな食べ物%s", utils.FontColor(100, 100, 255), utils.Reset)).AddContent("🍖 焼き肉、山葵、🍣 寿司")
	intro.AddTag(fmt.Sprintf("📜 %s保有資格%s", utils.FontColor(100, 100, 255), utils.Reset)).AddContent("DD2種,基本情報,陸特2級")
	fmt.Println(intro.PrintIntro())
}

これをプッシュしてworkflow終了をまつ

おわったら自分のコンソールで実行してみよう!

変更が適用されてたらばっちぐー!

まとめ

自分の名刺作っても更新したい情報があって刷りなおしとかしなくてもCI回して変更すれば解決!
みんなもつくってみてね!

Discussion