godoc on Google App Engine ========================== Prerequisites ------------- * Google Cloud SDK https://cloud.google.com/sdk/ * Redis * Go sources under $GOROOT * Godoc sources inside $GOPATH (go get -d golang.org/x/tools/cmd/godoc) Running locally, in production mode ----------------------------------- Build the app: go build -tags golangorg Run the app: ./godoc godoc should come up at http://localhost:8080 Use the PORT environment variable to change the port: PORT=8081 ./godoc Running locally, in production mode, using Docker ------------------------------------------------- Build the app's Docker container: make docker-build Make sure redis is running on port 6379: $ echo PING | nc localhost 6379 +PONG ^C Run the datastore emulator: gcloud beta emulators datastore start --project golang-org In another terminal window, run the container: $(gcloud beta emulators datastore env-init) docker run --rm \ --net host \ --env GODOC_REDIS_ADDR=localhost:6379 \ --env DATASTORE_EMULATOR_HOST=$DATASTORE_EMULATOR_HOST \ --env DATASTORE_PROJECT_ID=$DATASTORE_PROJECT_ID \ gcr.io/golang-org/godoc godoc should come up at http://localhost:8080 Deploying to golang.org ----------------------- Make sure you're signed in to gcloud: gcloud auth login Build the image, push it to gcr.io, and deploy to Flex: make cloud-build deploy Point the load balancer to the newly deployed version: (This also runs regression tests) make publish Stop and/or delete down any very old versions. (Stopped versions can be re-started.) Keep at least one older verson to roll back to, just in case. You can also migrate traffic to the new version via this UI. https://console.cloud.google.com/appengine/versions?project=golang-org&serviceId=default&versionssize=50 Troubleshooting --------------- Ensure the Cloud SDK is on your PATH and you have the app-engine-go component installed (gcloud components install app-engine-go) and your components are up-to-date (gcloud components update)