blob: 2f62d0cc0941e1e6cf8180b3fdbb7621fe245baf [file] [log] [blame] [view]
# golangorg
## Local Development
For local development, simply build and run. It serves on localhost:6060.
go run .
## Local Production Mode
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
## Local Production Mode using Docker
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.
## Deploying to golang.org
1. 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).
2. Check that the new version, mentioned on "target url:" line, looks OK.
3. 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.
4. 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](https://console.cloud.google.com/appengine/versions?project=golang-org&serviceId=default&versionsquery=%255B%257B_22k_22_3A_22env_22_2C_22t_22_3A10_2C_22v_22_3A_22_5C_22FLEXIBLE_5C_22_22_2C_22s_22_3Atrue%257D%255D).
5. You're done.
## 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`).
For deployment, make sure you're signed in to gcloud:
gcloud auth login