0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker + Goで始めるREST API開発 開発環境編

Posted at

目次

  1. 構成
  2. フォルダ構成
  3. dockerfileとyamlファイル
  4. goの実装
  5. 動作検証

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

今回は、以上となります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?