Dockerとdocker composeを使って、必要なファイルのコピーや諸々の設定を反映済みのコンテナを作成してGo言語の開発環境を構築してみました。
Go言語の公式イメージを使って「docker run」コマンドにオプションを付けてコンテナを起動する方法でも構築はできるのですが、打ち込むコマンドを極力少なくしたかったのでdocker composeを併用しました。
「docker run」コマンドで構築する場合はこちらの記事をご覧ください。
作成するコンテナの追加要件
- GitHubにSSH接続できるようにする
- GitHubのプライベートリポジトリをimportできるようにする
プライベートリポジトリをimportできるようにする手順についてはこちらの記事をご覧ください。
ディレクトリ構造とファイル
ディレクトリ構造とファイルは下記のようになります。
docker/golang
├── .gitconfig
├── Dockerfile
├── compose.yaml
├── config
├── id_ed25519_github
└── src
└── main.go
「.gitconfig」はGitHubのプライベートリポジトリをimportできるようにするために必要なファイルです。「config」と「id_ed25519_github」はGitHubにSSH接続できるようにするために必要なファイルです。
各ファイルの中身は下記のようになります。
.gitconfig
[url "ssh://git@github.com/"]
insteadOf = https://github.com/
Dockerfile
FROM golang:latest
RUN echo "Now building..."
RUN mkdir /root/.ssh
RUN mkdir /root/.key
RUN chmod 700 /root/.key
COPY .gitconfig /root/
COPY config /root/.ssh/
COPY id_ed25519_github /root/.key
RUN chmod 600 /root/.key/id_ed25519_github
WORKDIR /usr/src
compose.yaml
services:
go:
build: .
tty: true
volumes:
- ./src:/usr/src
config
ServerAliveInterval 300
TCPKeepAlive yes
Host github.com
HostName github.com
User git
IdentityFile /root/.key/id_ed25519_github
Port 22
id_ed25519_github
-----BEGIN OPENSSH PRIVATE KEY-----
省略
-----END OPENSSH PRIVATE KEY-----
こちらのファイルはGitHubにSSH接続する際に使用する鍵ファイル(秘密鍵)になります。
事前に作成してGitHubに設定しておいてください。
コンテナの作成及び起動
ファイル一式のあるディレクトリ(今回でいえばdocker/golang)に移動して下記コマンドを実行します。
sudo docker compose up -d
作成及び起動が終わったら下記コマンドを実行して状況を確認してください。
sudo docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
golang-go-1 golang-go "bash" go 2 minutes ago Up 2 minutes
サービス名は「go」、コンテナ名は「golang-go-1」で起動しているのが確認できます。
GitHubへのSSH接続の確認
下記のコマンドを実行してGitHubへのSSH接続が問題ないことを確認してください。
sudo docker compose exec -it go bash
ssh -T git@github.com
「Are you sure you want to continue connecting」と聞かれた場合には「yes」を入力してください。
まとめ
以上でDocker及びdocker composeを使ったGo言語の開発環境の構築は完了です。
この記事が参考になれば幸いです。
コメント