こんにちは、まくロロです。
最近はサーバーをGo、フロントにReactを使ってポートフォリオを作成しています。作成過程を今後ブログで発信していこうと考えてます。
今回は簡単にdockerを使った環境を作成してみます。その前にまずは、、
目次
dockerを使用するメリット
最近では多くの会社が取り入れている「docker」、主なメリットは以下です。
だいたい大きな特徴としてはこんな感じでしょうか。これからの開発ではdockerの使用が当たり前になってくるので簡単な環境はすぐ作れるぐらいには学習しとく必要がありそうですね。
Dockerを使ってみよう
では早速dockerを使ってみましょう。dockerの使い方は以下のような3ステップです。
ではまず、Dockefileの作成から
FROM golang:latest
RUN mkdir /go/src/charts_server
WORKDIR /go/src/charts_server
ADD . /go/src/charts_server
上記のDockerfileのやっていることとしては以下です。
- Docker Hubから最新版のgolangイメージを取得
- 「go/src/charts_server」ディレクトリをコンテナ内に作成
- 「go/src/charts_server」を作業ディレクトリとする
- 現ローカルディレクトリをコンテナ内の「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の環境を立ち上げてみました。ミニマムな環境ぐらいだったらすぐ作れると思うので是非、手を動かして自分で環境構築してみてください!
この記事へのコメントはありません。