はじめまして、マツガナイトです。
はじめに
とりあえずGo言語で何か作りたい。とりあえずチャットアプリっぽいものを作るか。と手を動かしていたのですが、
「環境構築ってどうやってやるんだっけ」
となりました。
1年前もこんなこと言ってた気がするので備忘録として抑えておこうかと。
Docker
とりあえずDocker
使います。楽です。
- どのOS下でも簡単に環境構築が可能
- デプロイが楽かなって思っています(今回はAWSのECSを利用してデプロイする予定)。
Docker
の基礎的なことは省略させていただきます。
※昔こんな記事あげたの思い出しました。基礎的なお話をしています。(古いですが)
Dockerとはなにか?Dockerfileとはなにか?
Dockerfileを書く
Dockerfile
を使用して、イメージ作成していきます。
# ベースとなるDockerイメージを指定
FROM golang:latest
# コンテナに作業ディレクトリを作成
RUN mkdir /go/src/mkwork
# 実行するワークディレクトリを指定
WORKDIR /go/src/mkwork
# ホストのファイルをコンテナの作業ディレクトリに移行
ADD . /go/src/mkwork
docker-compose.yml
続いて、docker-compose.ymlを作っていきます
このファイルはyaml形式による でDocker コンテナに関する起動オプションを記載するファイルとなります。
version: '3' # composeファイルのバーション指定
services:
app:
build: . # Dockerfileの置き場所によってpathは変わります
tty: true
volumes:
- .:/go/src/mkwork # マウントディレクトリ指定
build
docker-compose build
を実行する -> もちろんyamlファイルがあるパスで。
※ちゃんとDockerそのものを起動してね。
Successfully tagged go-docker-chat-app_app:latest
って出たので多分成功しました。
コンテナを起動
buildしてもコンテナを起動しないと、コンテナ内でgoは扱えません(そりゃそう)。
下記コマンドで起動しましょう。
$ docker-compose up -d
何かGoファイル作る
なんでもいいです。Hello World
をかましましょう。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
あとはコンテナ上で起動するので
$ docker-compose exec app go run main.go
をして、Hello World
が出れば問題なし。(bashに入って(docker-compose exec app /bin/bash
)、go run main.go
しても問題ないです。)
その他
noteやってます。
よければ概要欄から見てください。
以上です。