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?

Docker+Goで環境構築してみた

Last updated at Posted at 2025-05-18

私のDocker+Go環境構築手順を資料化しておきます。
キャッシュでコケたりしていたのでできるだけ簡単にできそうな手順を作ってみた。

対象者

・Web開発初学者
・他分野でのプログラミング経験者
・Linuxコマンドはまぁまぁわかる人

実施環境

・Mac M2 Sonoma 14.6.1
・Docker for Mac 4.40.0
・Docker 28.0.4
・Go 1.21

Docker環境構築

こちらのページのDocker部分のみ利用

プロジェクト予定構造

Goのプロジェクト構成は以下の通り作成する
※初学者はここまで行う必要がない

参考資料

予定プロジェクト階層
<Root>
┣━Project名/
┃  ┣━cmd
┃  ┃ ┣━main.go
┃  ┗━docker
┃    ┗━Dockerfile
┗━docker-compose.yml

ファイル用意

Dockerfile...
// use golang version
FROM golang:1.21

// これ移行Docker上では/app以下で扱う
WORKDIR /app

// 現在のローカルのルートからコンテナのルート(/app)へコピー
// ignore未設定なので全データコピー?
COPY . .

RUN go mod init sampleapp
RUN go get github.com/go-sql-driver/mysql
RUN go build -o main ./cmd

EXPOSE 8080

CMD ["./main"]

docker-compose.yml
services:
  app:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    ports:
      - "8080:8080"
    depends_on:
      - mysql
    environment:
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_USER=user
      - DB_PASSWORD=password
      - DB_NAME=testdb

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: testdb
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:
main.go
package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello from Go Web Service in Docker!")
}

func main() {
    http.HandleFunc("/", handler)
    fmt.Println("Server running on port 8080")
    http.ListenAndServe(":8080", nil)
}

ビルド、実行

Rootの位置で以下コマンドを叩く

ターミナル.
sampleapp% docker compose build
sampleapp% docker compose up

以下URLを叩いて動作を確認する

成功例
image.png

今回やれていないこと

・env等の外部設定化
・キャッシュや開発効率化を考えた実装
・その他、大規模開発を考慮した設計
・Dockerの詳細な使い方

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?