2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Go + Dockerで環境構築だけをする

Last updated at Posted at 2020-07-19

はじめまして、マツガナイトです。

はじめに

とりあえずGo言語で何か作りたい。とりあえずチャットアプリっぽいものを作るか。と手を動かしていたのですが、

「環境構築ってどうやってやるんだっけ」
となりました。

1年前もこんなこと言ってた気がするので備忘録として抑えておこうかと。

Docker

とりあえずDocker使います。楽です。

  • どのOS下でも簡単に環境構築が可能
  • デプロイが楽かなって思っています(今回はAWSのECSを利用してデプロイする予定)。

Dockerの基礎的なことは省略させていただきます。

※昔こんな記事あげたの思い出しました。基礎的なお話をしています。(古いですが)
Dockerとはなにか?Dockerfileとはなにか?

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 コンテナに関する起動オプションを記載するファイルとなります。

docker-compose.yml
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をかましましょう。

main.go
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やってます。
よければ概要欄から見てください。

以上です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?