こんにちは、イサムです!
これから何回かGo言語についてまとめていきます。
そのため、まずはGoの開発環境をローカルPCに構築していきます。
本記事では、Dockerを使用してGoの開発環境構築し、Goのプログラムの実行までを行います。
- Goの環境を簡単にローカルPCに構築したい!
- Dockerの使い方を知りたい!
- Goプログラム作成
- Dockerfileの作成
- docker-compose.ymlの作成(今後複数コンテナの作成のため)
- Dockerイメージの作成
- 作成したイメージを基にコンテナの起動
- Goプログラムの実行
ディレクトリ構成
ディレクトリ構成は、こちらに準拠します。
(公式ではありません。)
.
├── cmd
│ └── main.go
├── docker-compose.yml
├── Dockerfile.yml
Goプログラム作成
実行するプログラムを作成します。
package main
import "fmt"
func main() {
fmt.Println("Hello world")
}
Docker関連の準備
Dockerfile
Goのベースイメージは、容量を小さくするために、alpineを使用します。
# image取得(容量が小さいalpineを選択)
FROM golang:1.17.6-alpine
# ホストのファイルをコンテナの作業ディレクトリにコピー
COPY . /go/src/app
# ワーキングディレクトリの設定
WORKDIR /go/src/app/cmd
docker-compose.yml
今後、複数コンテナを作成するためdocker-compose.ymlを作成する。
version: "3.7"
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: app
ports:
- "80:80"
volumes:
- .:/go/src/app
tty: true #コンテナ常時起動
Dockerイメージのビルド
ターミナルで、docker-compose.ymlがあるフォルダに移動し、下記コマンドを実行することで、作成したDockerfile、docker-compose.ymlを基にイメージが作成されます。
(自分は普段、Makefileに実行するコマンドを定義し、makeコマンドで実行することが多いです。)
$ docker-compose build
・・・(結果省略)・・・
Successfully built 8acd2d14f2c3
下記コマンドを実行し、イメージが作成されていることが確認できれば、イメージの作成が完了します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
app latest 8acd2d14f2c3 4 days ago 331MB
コンテナの起動と実行
作成したイメージを基にコンテナを起動します。
$ docker-compose up -d
Starting app ... done
起動したコンテナでGoのプログラムを実行します。
appは、docker-compose.ymlで指定したservice名。
$ docker-compose exec app go run main.go
Hello World!
コンテナの停止
使用しなくなったコンテナは停止します。
$ docker-compose down
Stopping app ... done
Removing app ... done
Removing network app
まとめ
この記事では、ローカルPCにDockerを使用してGo環境の構築をしました。
Go以外でも、PHPやRails等他の言語の環境構築する際にもDockerは非常に便利ですので、ぜひ使ってみてください。
もし「記事の内容が間違えている!」、「もっと良い方法がある!」、「この記事参考にしたけどうまくいかない!」等ありましたら、Twitterまたはお問い合わせフォームからご連絡いただければと思います。
DockerやGoについての基礎知識は他の記事でまとめていきたいと思います。
最後までご覧いただきありがとうございました。