LoginSignup
0
1

More than 1 year has passed since last update.

Go言語を学ぶ ~環境構築~ part1

Posted at

目的

業務でもGoを使う機会がありそうだし、本格的にフリーな時間を使って触ることにする。
せっかくならフロントもTypescriptを使って考えてみたいけどそれは別の話とする。

目標

業務でいろいろ調べものをよくするからGithub REST API活用したなんかを作ることを目指す。
フレームワークはGinでもよかったが、echoに挑戦する

この記事で目指すこと

バックエンドをGo、DBはMySQLの開発環境を作る。
個人的にはDockerが扱いやすいのでDockerで用意する。

開発環境の用意

初期作業

ネットを探せば見つかるだろうが、せっかくなので1からつくる
実はGoのコンテナを用意するのは少し面倒(何回か作ったのでなれてきてはいる)

STEP1 docker-compose.ymlおよびDockerFileの用意

STEP1でのフォルダ構成以下のようになる

.
├── echo/
│   └── Dockerfile
└── docker-compose.yml

用意するdocker-compose.ymlはGo絡みの作業を優先するのでまずは以下の内容で用意

version: '3'
services:
  go_echo:
    container_name: go_echo
    build:
      context: ./echo/
    volumes:
      - ./echo:/go/src/app
    tty: true
    environment:
      - TZ=Asia/Tokyo

Dockerfileも簡潔に用意する。作業時にはv1.20がリリースされているのでせっかくなのでこちらを使う

FROM golang:1.20-alpine

RUN apk update && apk add git

RUN mkdir ./app
WORKDIR /go/src/app

準備ができたらdocker-compose.ymlの場所でコマンドを実行

docker-compose up

起動したらコンテナの中に入る

docker exec -it go_echo /bin/bash(Windowsだとshの可能性あり)

コンテナ内でGoの初期化コマンドを実行する

go mod init app

実行結果として

go: creating new go.mod: module app

がでればOKです。
これで作業用のGoプロジェクトの準備が完了です

STEP2 MySQLの用意

続いて、MySQLをDocker環境内に用意する。
フォルダ構成は次のようになる。

.
├── database/(new)
├── echo/
│   ├── go.mod
│   └── Dockerfile
└── docker-compose.yml

dockedr-compose.ymlにMySQLのサービスを追加

version: '3'
services:
  go_echo:
    container_name: go_echo
    build:
      context: ./echo/
    volumes:
      - ./echo:/go/src/app
    tty: true
    environment:
      - TZ=Asia/Tokyo

  go_echo_db:
    image: mysql:5.7
    container_name: mysql_host
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: echo
      MYSQL_USER: docker
      MYSQL_PASSWORD: docker
      TZ: 'Asia/Tokyo'
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./database/data:/var/lib/mysql
    ports:
      - 3306:3306

dockerが起動しているときは再起動、起動していなければ起動を行う

docker-compose up

用意したdatabaseフォルダ内にファイルがたくさん作成されれば成功
これは、MySQLのDB情報を永続化させているため、初期軌道したときにMySQLの初期処理でファイルが用意されるため

環境構築はこれで完了!!

終わりに

今回は環境構築でDocker環境を用意しただけ
次からは本格的なecho周りの設定を行う

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