I do this trick to double-check my work anyway. Might as well include it where others can see or independently verify.
Federated Wiki Farm
Start Playing Federated Wiki: http://start.fed.wiki
Run a local wiki farm
docker run -p 3000:3000 -it --rm \
dobbs/farm
Visit http://localhost:3000 and http://anything.localhost:3000
Run a local wiki that will survive a reboot
docker run -p 3000:3000 -it --rm \
-v ~/.wiki:/home/node/.wiki \
dobbs/farm
Your wiki pages and configuration will be saved in the ~/.wiki folder.
Development
This image's tag does not match the version of the included wiki software. Our version indicates the scale of changes in this tiny devops pipeline.
Testing new images locally:
TAG=1.0.14-prefer-title
IMAGE=dobbs/farm:$TAG
docker build --tag $IMAGE .
You might also want to remember the most recent tag:
git tag --list | tail -1
Update WIKI_VERSIONS.txt
docker run --rm dobbs/farm:1.0.21 wiki --version > WIKI_VERSIONS.txt
Publish container images
GitHub
git tag -am "" "$TAG"
git push --atomic origin main "$TAG"
Docker Hub
docker build --tag $IMAGE . # if you haven't already
docker build --tag dobbs/farm:latest . # if you haven't already
docker push $IMAGE
docker push dobbs/farm:latest
Sometimes we publish a docker image with no changes to the wiki source
code. This allows us to pick up non-breaking changes to some of the
plugins. Using --no-cache
ensures docker re-runs this line from the
Dockerfile
in particular: npm install -g --prefix . $WIKI_PACKAGE
.
docker build --no-cache --tag $IMAGE . # if you haven't already
docker build --tag dobbs/farm:latest . # if you haven't already
docker push $IMAGE
docker push dobbs/farm:latest
Publish with updated wiki dependencies
We published 1.0.16 on May 2. The friends security plugin was updated to 0.2.5 on May 17. See fedwiki/wiki-security-friends
We built a new image with no changes to our Dockerfile and published it as version 1.0.17. The only change for 1.0.17 is this updated README.md so we can remember how to do this again in the future.
We chose our tag and followed exactly the same steps above to publish container images.
Experiment with K8S
With the local kubernetes example (see examples/k8s/README.md):
k3d image import $IMAGE --cluster wiki
kubectl patch deployment.apps/wiki-deployment \
--type='json' \
-p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"'$IMAGE'"}]'