From 5066da6e19fdac99e20fc23780307e19dac06317 Mon Sep 17 00:00:00 2001 From: Chuck Lantz Date: Fri, 19 Apr 2019 13:16:41 -0700 Subject: [PATCH] Update go example, README --- .devcontainer/Dockerfile | 10 ++++++- .devcontainer/devcontainer.json | 1 + .devcontainer/settings.vscode.json | 3 ++ .vscode/launch.json | 4 +-- README.md | 47 +++++++++++++++++++++++++----- hello.go | 10 ------- server.go | 23 +++++++++++++++ 7 files changed, 77 insertions(+), 21 deletions(-) create mode 100644 .devcontainer/settings.vscode.json delete mode 100644 hello.go create mode 100644 server.go diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 8e93a6a..7a13ee3 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -23,7 +23,15 @@ RUN go get -u -v \ github.com/mgechev/revive \ github.com/derekparker/delve/cmd/dlv -# Install git, process tools +# gocode-gomod +RUN go get -x -d github.com/stamblerre/gocode \ + && go build -o gocode-gomod github.com/stamblerre/gocode \ + && mv gocode-gomod $GOPATH/bin/ + +# Copy default endpoint specific user settings overrides into container to specify Python path +COPY settings.vscode.json /root/.vscode-remote/data/Machine/settings.json + +# Verify git, process tools installed RUN apt-get update && apt-get -y install git procps # Clean up diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5565bc1..694be03 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,7 @@ { "name": "Go", "dockerFile": "Dockerfile", + "appPort": 9000, "extensions": [ "ms-vscode.go" ], diff --git a/.devcontainer/settings.vscode.json b/.devcontainer/settings.vscode.json new file mode 100644 index 0000000..9043898 --- /dev/null +++ b/.devcontainer/settings.vscode.json @@ -0,0 +1,3 @@ +{ + "go.gopath": "/go" +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 164eb25..4b21482 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,11 +2,11 @@ "version": "0.2.0", "configurations": [ { - "name": "Launch file", + "name": "Launch Server", "type": "go", "request": "launch", "mode": "debug", - "program": "${file}" + "program": "${workspaceFolder}/server.go" } ] } \ No newline at end of file diff --git a/README.md b/README.md index d91e459..7d5b117 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,47 @@ -# Go Sample Project for Visual Studio Remote - Containers +# Try Out Development Containers: Go -This is a sample project to go along with the "try" quick start for the VS Code Remote - Containers extension. +This is a sample project to go along with the "try" quick start for the **[VS Code Remote - Containers](https://aka.ms/vscode-remote/containers)** extension. -Using the sample: +**If you aren't already following the quick start, [see here](#setting-up-the-development-container).** -1. **[Windows]** Disable automatic line ending conversion for Git on the *Windows side* (given Linux and Windows use different line endings). Run: `git config --global core.autocrlf false` -2. Follow the steps at [https://aka.ms/vscode-remote/containers/getting-started](https://aka.ms/vscode-remote/containers/getting-started). -3. Open `hello.go`, edit, launch the program, and try things out! +## Things to try + +One you have this sample opened in a container, you'll be able to work with it like you would locally. + +Some things to try: + +2. **Edit:** + 1. Open `server.go` + 2. Try adding some code and check out the language features. +3. **Build, Run, and Debug:** + 1. Open `sever.go` + 2. Add a breakpoint. + 3. Press F5 to launch the app in the container. + 4. Open a local browser and go to `http://localhost:9000` and note you can connect to the server in the container. + 5. Once the breakpoint is hit, try hovering over variables, examining locals, and more. +4. **Forward another port:** + 1. Stop debugging + 2. Open `sever.js` + 3. Change the server port to 5000. (`portNumber := "5000"`) + 4. Press F5 to launch the app in the container. + 5. Press F1 and run the **Remote-Containers: Forward Port...** command. + 6. Select port 5000. + 7. Click "Open Browser" in the notification that appears to access the web app on this new port. + +## Setting up the development container + +Follow these steps to open this sample in a container: + +1. If this is your first time using a development container, please follow the [getting started steps](https://aka.ms/vscode-remote/containers/getting-started) to get set up. + +2. If you're not yet in a development container: + 1. Clone this repository. + 2. Press F1 and select the **Remote-Container: Open Folder in Container...** command. + 3. Select the cloned copy of this folder, wait for the container to start, and try things out! ## Contributing -This project welcomes contributions and suggestions. Most contributions require you to agree to a +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. @@ -25,4 +56,4 @@ contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additio ## License Copyright © Microsoft Corporation All rights reserved.
-Licensed under the MIT License. See LICENSE in the project root for license information. \ No newline at end of file +Licensed under the MIT License. See LICENSE in the project root for license information. diff --git a/hello.go b/hello.go deleted file mode 100644 index 68bf00b..0000000 --- a/hello.go +++ /dev/null @@ -1,10 +0,0 @@ -/*---------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See LICENSE in the project root for license information. - *---------------------------------------------------------------------------------------*/ - -package main -import "fmt" -func main() { - fmt.Println("hello world") -} \ No newline at end of file diff --git a/server.go b/server.go new file mode 100644 index 0000000..98d81a6 --- /dev/null +++ b/server.go @@ -0,0 +1,23 @@ +/*---------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See LICENSE in the project root for license information. + *---------------------------------------------------------------------------------------*/ + + package main + + import ( + "io" + "net/http" + "fmt" + ) + + func hello(w http.ResponseWriter, r *http.Request) { + io.WriteString(w, "Hello remote world!") + } + + func main() { + portNumber := "9000" + http.HandleFunc("/", hello) + fmt.Println("Server listening on port ", portNumber) + http.ListenAndServe(":" + portNumber, nil) + } \ No newline at end of file