blog

GoをDocker化する

ローカルでデバッグした後、コードをリポジトリにコミットすれば、Dockerイメージが自動的にビルドされ、本番サーバにデプロイされます。また、設定ファイルのセキュリティにも注意してください。 コードをコ...

May 19, 2020 · 2 min. read
シェア

ターゲット

ローカルでのデバッグが終わったら、コードをリポジトリにCommitすれば、自動的にDockerイメージがビルドされ、本番サーバに自動的にデプロイされます。また、設定ファイルのセキュリティにも注意してください。

フロー

コミットされたコード -> Docker HubのAutomatedサービスがGithub上のコミットを検出し、Dockerfileに基づいてImageをビルド -> 本番サーバのWatchTowerがDocker Hubで更新が発生したことを検出し、ローカルのImageを自動的に更新。

設定ファイル受け渡しのアイデア

GithubリポジトリやDocker Hubイメージは公開されているため、これらの場所に設定ファイルを保存することはできません。docker run timeはパラメータを-e経由でdocker imageに渡し、Dockerfileの定義経由でGoプログラムにコマンドラインとしてパラメータを渡し、Goプログラムはpflag経由でコマンドラインパラメータを受け取ります。

使用方法

本番サーバー

以下のコードでイメージを実行します。

docker rm go_docker -f
docker rmi 117503445/go_docker
docker run -it --name go_docker -d -e var1="dockervar1" -e var2="dockervar1" -p 80:80 --restart=always 117503445/go_docker:latest

自動アップデートを有効にするための WatchTower の再設定

docker run -d 
 --name watchtower 
 -v /var/run/docker.sock:/var/run/docker.sock 
 containrrr/watchtower

ローカルデバッグ

私たちはレイヤービルドを使用しており、go buildでビルドレベルで実行可能アプリをビルドし、prodレベルで実行します。後で設定ファイルの構造を変更する必要がある場合は、Dockerfileも変更する必要があります。

ローカルDockerの実行

docker rm go_docker -f
docker rmi 117503445/go_docker
docker build -t 117503445/go_docker . # 
docker build -t 117503445/go_docker -f Dockerfile . #,goイメージを有効にする
docker run -it --name go_docker -d -e var1="dockervar1" -e var2="dockervar1" -p 80:80 --restart=always 117503445/go_docker:latest
Read next

リアクトの高位コンポーネント

一般的にreactコンポーネントはレンダリング機能、つまり主にhtmlの出力を担当する機能を再利用しやすいためです。 高次コンポーネントは、実際にはラッパー関数によって返されるコンポーネントであり、react...

May 19, 2020 · 8 min read