我使用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
image.png

执行环境

    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 不进行端口映射

广告
将在 10 秒后关闭
bannerAds