LoginSignup
1
0

More than 1 year has passed since last update.

golang playgroundをローカルで動かす方法

Posted at

この記事に書いてある内容で実行できなかった場合は教えてください。

ここでも質問されているのですが、READMEに書かれている方法ではlocalで起動することが出来ません。

Gophersのslackで聞いたところ解決したので書いておきます。(その節はありがとうございました!)

この手順に関してはREADMEを見るのではなく、Makefileを見ることで知ることが出来ます。

実行環境例

  • Ubuntu 20.04 LTS
  • docker version
$ docker version
Client: Docker Engine - Community
 Version:           20.10.3
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        48d30b5
 Built:             Fri Jan 29 14:28:23 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.3
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       46229ca
  Built:            Fri Jan 29 14:31:57 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

repositoryをclone

$ git clone https://go.googlesource.com/playground

gVisorの準備

installする場合

[https://gvisor.dev/docs/user_guide/install/:title]

上記に記載してあるお好みの方法でインストール

※aptでinstallした場合はインストール後に runsc install コマンドを実行する必要がある。

gVisorを使いたくない(使えない)場合

gVisor(runsc)がインストールされていないとplaygroundのソースコードがそのままでは実行できない為、必要に応じて書き換えます。

playground/sandbox/sandbox.go
cmd := exec.Command("docker", "run",
        "--name="+name,
        "--rm",
        "--tmpfs=/tmpfs:exec",
        "-i", // read stdin
        # runsc -> runcに書き換え
        "--runtime=runc",
        "--network=none",
        "--memory="+fmt.Sprint(memoryLimitBytes),

        *container,
        "--mode=contained")
playground/sandbox/Makefile
runlocal: docker dockergvisor
        docker network create sandnet || true
        docker kill sandbox_dev || true
        # rootlessDocker用
        # /var/run/docker.sock -> /var/run/user/1000/docker.sockに書き換え
        docker run --name=sandbox_dev --rm --network=sandnet -ti -p 127.0.0.1:8080:80/tcp -v /var/run/user/1000/docker.sock:/var/run/docker.sock golang/playground-sandbox:latest --dev

ローカル実行環境構築

1.基本となるdocker imageをビルド

playground
$ docker build -t golang/playground .

2.sandboxサーバ側起動

playground/sandbox
$ make runlocal

3.clientサーバ側起動

playground
$ make runlocal

4.playgroundに接続

http://localhost:8081/

おわりに

個人的には他人に何かのインストールを強要することは好きではないのでgVisorは好きじゃないです

1
0
1

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