我使用Windows10+Vagrant+Docker+VsCode来准备HTTP真实世界的实操课程
概述
根据准备好的实践教程,我进行了环境设置并记录了备忘。
-
- ソース
1章読了時点
Vagranfile
3章読了時点
由于有错误列表,所以需要确认一下。go库的路径可能不正确。(正:github.com/k0kubun/pp. 错: github.com/k0kibun/pp 等)。
环境
-
- Windows 10 Home
Vagrant 2.2.7
virtualbox 6.1.6
ubuntu 18.04 LTS
docker-ce Docker version 19.03.5, build 633a0ea838
docker-compose version 1.25.3, build d4d1b42b
搭建环境
巧克力的准备
- 使用するパッケージを簡単にインストールできるように、Windows用のパッケージマネージャを導入
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " [System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
准备 Curl
- gitbashのものを使用する
choco install git -y
准备Golang
编辑器 (Bianjiqu)
-
- vscodeのおススメを利用。(.vscode/extensions.json)に記述
- 上記を利用するために、golangのパスの場所が必要になったのでchocolateyでインストール
choco install golang -y

执行环境
- vagrant上でdockerを動かす。
version: "3"
services:
realworld:
build: ./golang
volumes:
- ../src:/app/src
working_dir: /app
ports:
- 18888:18888
FROM golang:latest
#!/bin/bash
bin_dir=$(cd $(dirname $0) && pwd)
parent_dir=$bin_dir/..
docker_dir=$parent_dir/docker
composeFile=${1:-"docker-compose.yml"}
container_name=${1:-realworld}
docker ps | grep $container_name
if [ $? -eq 0 ]; then
cd $docker_dir && docker-compose exec $container_name go run /app/src/server.go
else
cd $docker_dir && docker-compose run --service-ports $container_name go run /app/src/server.go
fi
package main
import (
"fmt"
"log"
"net/http"
"net/http/httputil"
)
func handler(w http.ResponseWriter, r *http.Request) {
dump, err := httputil.DumpRequest(r, true)
if err != nil {
http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
return
}
fmt.Println(string(dump))
fmt.Fprintf(w, "<html><body>Hello</body></html>\n")
}
func main() {
var httpServer http.Server
http.HandleFunc("/", handler)
log.Println("start http listening :18888")
httpServer.Addr = ":18888"
log.Println(httpServer.ListenAndServe())
}
确认动作
-
- 上記を準備した後、vagrant上でgo.shを動かせば検証用のサーバが起動する。
curlでアクセスして確認
curl –http1.0 http://192.168.50.10:18888/greeting
可以参考
巧克力软件 | 安装
记录使用Chocolatey进行环境安装的备忘录
在Docker中配置Go的开发环境
关于VSCode + golang的舒适补全,我总结了一些自己的想法
docker-compose run 不进行端口映射