dockerを使ってGolangの環境構築

こんにちは、まくロロです。

最近はサーバーをGo、フロントにReactを使ってポートフォリオを作成しています。作成過程を今後ブログで発信していこうと考えてます。

今回は簡単にdockerを使った環境を作成してみます。その前にまずは、、

dockerを使用するメリット

最近では多くの会社が取り入れている「docker」、主なメリットは以下です。

  • 環境を配布することができる
  • ローカル環境を汚さない
  • OSやミドルウェアに依存しない
  • 開発環境立ち上げが早い
  • だいたい大きな特徴としてはこんな感じでしょうか。これからの開発ではdockerの使用が当たり前になってくるので簡単な環境はすぐ作れるぐらいには学習しとく必要がありそうですね。

    Dockerを使ってみよう

    では早速dockerを使ってみましょう。dockerの使い方は以下のような3ステップです。

  • Dockerfileの作成
  • Docker-composeの作成
  • Docker-composeの立ち上げ
  • ではまず、Dockefileの作成から

    FROM golang:latest
    RUN mkdir /go/src/charts_server
    WORKDIR /go/src/charts_server
    ADD . /go/src/charts_server

    上記のDockerfileのやっていることとしては以下です。

    1. Docker Hubから最新版のgolangイメージを取得
    2. 「go/src/charts_server」ディレクトリをコンテナ内に作成
    3. 「go/src/charts_server」を作業ディレクトリとする
    4. 現ローカルディレクトリをコンテナ内の「go/src/charts_server」へコピー

    dockerfileは基本的に、基盤imageを取得してきたり、コンテナ内でのディレクトリの作成、マウント処理などを記述したりします。

    また、自分でカスタマイズしたDockerfileはdocker-imageとして、AWSやGCPなどのdocker-registoryで保存することもできます。

    これで一応最低限の環境imageが作られたので、こちらのイメージからコンテナを立ち上げればgolangの開発環境がコンテナで作られます。しかし、実際の開発ではdocker-composeを作って起動させるので、今回はそちらも試してみます。

    docker-composeを作ろう

    docker-composeって何やねんって話しですが、簡単に言うとただDockerfileやimageを複数指定して、同時に起動させることができるだけです。

    使い方としてはgolangの開発環境とmysqlの仮想環境を同時に作成するみたいなイメージです。

    Dockerfileと同じディレクトリ階層にdocker-compose.ymlというファイル名で下記を作成してください。

    version: '3'
    services:
      app:
        build: .
        tty: true
        volumes:
          - .:/go/src/charts_server
        ports:
          - "8080:8080"
        depends_on:
          - mysql
      mysql:
        image: mysql:latest
        container_name: mysql_charts_container
        environment:
          MYSQL_ROOT_PASSWORD: ${ROOTPASS}
          MYSQL_DATABASE: ${DATABASE}
          MYSQL_USER: ${USERNAME}
          MYSQL_PASSWORD: ${USERPASS}

    では、今回はgolangの環境とmysqlの環境もまとめてcomposeで管理して立ち上げてみましょう。

    $docker-compose up -d

    立ち上げは簡単で上記のコマンドです。

    これで、docker-compose内に指定してある各imageがコンテナとして立ち上がります。今回は、Dockerfileで作ったgolangの開発環境とmysqlのコンテナが立ち上がりました。(-dオプションでバックグラウンドで立ち上げてます。)

    起動してgoのコードを実行してみよう

    次に立ち上げた、golangの環境で簡単な関数を実行してみましょう。

    今回は単純に引数に値を渡すと「hello world, (引数)」と出力するようなプログラムです。

    package main
    
    import "fmt"
    
    func main() {
    	greet := HelloWorld("hoge")
    	fmt.Println(greet)
    }
    
    func HelloWorld(s string) string {
    	return "hello world, " + s 
    }

    コードを実行するためには、先ほど立ち上げたgolangのコンテナ内に入る必要があります。

    $docker exec -it charts_server_app_1 /bin/bash

    こちらのコマンドでコンテナ内に入れると思います。そして、コンテナ内で`go run main.go`でコンパイル、実行してみてください。

    引数にhogeを渡しているので、hello world, hogeが出力されました。

    これで見事dockerでgolangの開発環境を作り、その中でコードを実行することができました。

    次回は、mysqlやreactの環境もdockerで立ち上げて連携などさせていきます。

    まとめ

    今回は簡単にdockerを使ってgolangの環境を立ち上げてみました。ミニマムな環境ぐらいだったらすぐ作れると思うので是非、手を動かして自分で環境構築してみてください!

    IT業界就活に成功するために前のページ

    オススメmac作業効率化アプリ次のページ

    関連記事

    1. プログラミング

      WordPressをレンタルサーバーからクラウド(Iaas, Paas)に移行する手順

      こんにちはマクロロです。今回はエックスサーバーなどのレンタル…

    2. プログラミング

      未経験エンジニア学習順序【アプリリリースまで】

      こんにちはまくロロです。今回は、未経験から一人でサービスをリ…

    3. プログラミング

      【エンジニア】サービス開発とアルゴリズムは別物?

      こんにちはまくロロです。今回は「サービス開発とアルゴリズムは別物であ…

    4. プログラミング

      これから伸びる言語Golangを習得しよう。

      こんにちは、まくロロです。私は現在、主にrailsを使用した…

    5. プログラミング

      Dockerとは

      こんにちは、まくロロです。最近インフラ周りに興味が出てきて、今後do…

    6. プログラミング

      Saas, Paas, Iaasとは

      今回はクラウドの技術レイヤーで分けられるSaas, Paas, Ia…

    コメント

    1. この記事へのコメントはありません。

    1. この記事へのトラックバックはありません。

    最近の記事

    PAGE TOP