目次
- 構成
- フォルダ構成
- dockerfileとyamlファイル
- goの実装
- 動作検証
1.構成
ミドルウェア | バージョン |
---|---|
golang | 13.4.16 |
docker | 18.16.1 |
2.フォルダ構成
┣━backend/
┃ ┣━build
┃ ┃ ┣━Dockerfile
┃ ┃ ┗━.go_env
┃ ┗━cmd
┃ ┗━main.go
┗━docker-compose.yml
3. dockerfileとyamlファイルの作成
まずはDockerfileの作成を行います。
Dockerfileは、Dockerイメージを作成するための手順書となります。
そのため、goのどのバージョンを利用するのか?や、どのフォルダで作業を行うのか?ここには記載していませんが、今後出てくる、ミドルウェアのインストールについても、このDockerfileに記載します。
# goバージョン
FROM golang:1.21.0-alpine3.18
# アップデートとgitのインストール
RUN apk update && apk add git
# webapi_testディレクトリの作成
RUN mkdir /webapi_test
# ワーキングディレクトリの設定
WORKDIR /webapi_test
# ホストのファイルをコンテナの作業ディレクトリにコピー
COPY . /webapi_test
# モジュールの作成
RUN go mod init webapi_test
# 実行
CMD ["go", "run", "/webapi_test/webapi_test/cmd/main.go"]
続いて、上で作成したdockerfileを利用して、コンテナを作成するためのコードを記載します。
ここに複数のコンテナ情報を記載し、実行することで、複数のコンテナを一度に作成することが可能となります。
※今回は、Goの実行コンテナのみを作成しています。
docker-compose.yml
version: '3' # composeファイルのバージョン
services:
boiler-plate: # サービス名
container_name: webapi_test
build: # ビルドに使うDockerファイルのパス
context: .
dockerfile: ./build/Dockerfile
volumes: # マウントディレクトリ
- .:/webapi_test
tty: true # コンテナの永続化
env_file: # .envファイル
- ./build/.go_env
environment:
- TZ=Asia/Tokyo
4. goの実装
ここからは、dockerコンテナ上で動作するGo言語のコードを記載します。
今回は、環境設定ということもあり、簡単な”Hello World”を表示するだけのコードとなります。
main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World")
}
5. 動作検証
以下のコマンドを実行することで、docker-compose.ymlのビルドを行います。
$ docker-compose build
以下のコマンドを実行することで、docker-compose.ymlファイルを実行し、コンテナを作成します。
$ docker-compose up
docker-compose upコマンドを実行した場合、最後から2行目に”Hello World”が表示されました。
$ Attaching to webapi_test
$ webapi_test | Hello World
$ webapi_test exited with code 0
今回は、以上となります。