1
1

More than 1 year has passed since last update.

DockerfileだけでGoの最小構成の環境を構築してみた(爆速構築)

Last updated at Posted at 2023-02-24

概要

学習として、DockerでGoの最小構成の環境を構築してみた

ターゲット

以下の人を対象にしてます

  • 絶対にローカル汚したくない
  • DockerComposeとかはいらん
  • フレームワークは使わない
  • CLIで動けばそれでいい

実装方法

ディレクトリ構成

- go
    - Dockerfile
    - main.go

Dockerfile

FROM golang:alpine

RUN apk update && \
    apk upgrade && \
    apk add bash
WORKDIR /go/src

COPY ./main.go /go/src

CMD ["/bin/bash"]

レイヤー説明

第1レイヤー

FROM golang:alpine

このレイヤーでは、Go言語を使用するためのalpineというLinuxディストリビューションを使用することを指定しています。
※Alpine Linuxは軽量なLinuxディストリビューションの1つ

第2レイヤー

RUN apk update && \
    apk upgrade && \
    apk add bash

このレイヤーでは、apkコマンドを使用してシステムを更新し、bashとmakeパッケージをインストールしています。
※APK:Alpine Linuxのパッケージ管理システム

第3レイヤー

WORKDIR /go/src

このレイヤーでは、ワークディレクトリを/go/srcに設定しています。

第4レイヤー

COPY ./main.go /go/src

このレイヤーでは、main.goファイルを/go/srcにコピーしています。

第5レイヤー

CMD ["/bin/bash"]

このレイヤーでは、/bin/bashを実行するよう指定しています。

main.go

main.go
package main

import "fmt"

func main() {
  fmt.Printf("Hello World\n")
}

コンテナ作成

イメージ作成

docker build -t golang:alpine . 

コンテナ作成

docker container run -it --name goapp -v ${PWD}:/go/src golang:alpine

動作確認

5825ed41817f:/go/src# go run main.go
Hello World

再度コンテナ内に入る方法

docker start goapp
docker exec -it goapp bash

あとがき

Dockerって便利だね...♠︎

1
1
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
1
1