For local development, simply build and run. It serves on localhost:6060.
go run .
To run in production mode locally, you need:
Run with the prod
tag:
go run -tags prod .
In production mode it serves on localhost:8080 (not 6060). The port is controlled by $PORT, as in:
PORT=8081 ./golangorg
To run in production mode locally 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 GOLANGORG_REDIS_ADDR=localhost:6379 \ --env DATASTORE_EMULATOR_HOST=$DATASTORE_EMULATOR_HOST \ --env DATASTORE_PROJECT_ID=$DATASTORE_PROJECT_ID \ gcr.io/golang-org/golangorg
It serves on localhost:8080.
Run make cloud-build deploy
to build the image, push it to gcr.io, and deploy to Flex (but not yet update golang.org to point to it).
Check that the new version, mentioned on “target url:” line, looks OK.
If all is well, run make publish
to publish the new version to golang.org. It will run regression tests and then point the load balancer to the newly deployed version.
Stop and/or delete 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 view, stop/delete, or migrate traffic between versions via the GCP Console UI.
You're done.
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
).
For deployment, make sure you're signed in to gcloud:
gcloud auth login