LoginSignup
2
5

More than 1 year has passed since last update.

Docker で Go の開発環境を作る(Docker × Go × Mysql)

Last updated at Posted at 2021-09-26

やりたいこと

docker を使って go の開発環境を作る
ローカル環境で go の開発、実行ができるように docker で環境構築を行なっていきます。

作るもの

docker, docker-compose を使った go の開発環境
以下の環境をつくっていきます。
・ docker コンテナで go が動く
・ docker コンテナで mysql が動く
・ docker コンテナで phpadmin が動く(おまけ)

やってき

今回作っていくものは以下の通りです。

../
└── go-template
    ├── Dockerfile
    ├── docker-compose.yml
    └── main.go

1.Dockerfile の作成

go の動作環境を作るための Dockerfile です

Dockerfile
# ベースになる docker イメージを指定
FROM golang:1.17.1-alpine

# 作業ディレクトリの作成
RUN mkdir /go/src/app

# 作業ディレクトリの設定
WORKDIR /go/src/app

# ホストのファイルをコンテナの作業ディレクトリにコピー
ADD . /go/src/app

2.docker-compose.yml の作成

mysql, phpadmin はめんどうとりあえず最低限の設定のみとするので、
Dockerfile は作らずに、 docker-compose.yml で最低限の記述のみとしています。

docker-compose.yml
version: '3'
services:
  go-app: # サービス名
    container_name: app # コンテナ名
    build: .  # ビルドに使う docker ファイルの場所
    tty: true # コンテナの永続化
    ports:
      - 80:8080 # api 立てた時に使えるように
    volumes: 
      - .:/go/src/app # マウントディレクトリ
  mysql:
      image: mysql:5.7
      container_name: mysql
      ports:
        - 3306:3306
      environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: docker
          MYSQL_USER: docker
          MYSQL_PASSWORD: docker
          TZ: 'Asia/Tokyo'
  phpadmin:
      image: phpmyadmin/phpmyadmin
      container_name: phpadmin
      depends_on:
          - mysql
      environment:
        - PMA_ARBITRARY=1
        - PMA_HOSTS=mysql
        - PMA_USER=docker
        - PMA_PASSWORD=docker
      ports:
        - 3000:80

3.main.go の作成

シンプルに hello world

main.go
package main

func main() {
    print("Hello World!")
}

動作確認

docker-compose でコンテナを起動します。

# コンテナを起動
% docker-compose up -d

# 起動確認
% docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                               NAMES
322d31850870        phpmyadmin/phpmyadmin   "/docker-entrypoint.…"   55 seconds ago      Up 54 seconds       0.0.0.0:3000->80/tcp                phpadmin
343fb73f905a        mysql:5.7               "docker-entrypoint.s…"   57 seconds ago      Up 55 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
4d1e2248e0f8        go-template_go-app      "/bin/sh"                57 seconds ago      Up 55 seconds       0.0.0.0:80->8080/tcp                app

無事に起動してますね

phpadmin と mysql の確認をしていきます
下記の URL に接続します。
http://localhost:3000/
こんな感じの画面が表示されれば OK です。
image.png

画面左に「docker」もされており、DBへの接続も問題なさそうですね。
⇨ 以下で指定した DB に接続できているので

docker-compose.yml
  mysql:
      image: mysql:5.7
      container_name: mysql
      ports:
        - 3306:3306
      environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: docker
          MYSQL_USER: docker
          MYSQL_PASSWORD: docker

続いて、 main.go の hello world です。
以下のコマンドで実行、確認します。

% docker exec app go run main.go
Hello World!                                                                                                                                                                                                                    

無事、Hello World! が出力されました。
今回の作業はこれで以上です。

今後はこれをベースに開発していきます💪

最後に

今回作ったものは以下のリポジトリに配置しています。
https://github.com/Ixy-194/go-template

2
5
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
2
5