🤗
docker runで名刺つくろうぜ!
皆さん名刺を渡しているとき何を使ってますか?
- 紙名刺?
- 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
おお,ええんとちゃう?
実際それっぽくしてみよう
コンソールに出力させてるだけなのでエスケープシーケンスとか色々ついかして…
それっぽくなった。
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