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