For local development, simply build and run. It serves on localhost:6060.
go run .
To run in production mode locally, you need:
- the Google Cloud SDK; see https://cloud.google.com/sdk/
- Redis
- Go sources under $GOROOT
- Godoc sources inside $GOPATH
(
go get -d golang.org/x/website/cmd/golangorg
)
Build with the golangorg
tag and run:
go build -tags golangorg
./golangorg
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 GODOC_REDIS_ADDR=localhost:6379 \
--env DATASTORE_EMULATOR_HOST=$DATASTORE_EMULATOR_HOST \
--env DATASTORE_PROJECT_ID=$DATASTORE_PROJECT_ID \
gcr.io/golang-org/godoc
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