mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
* Rejig the build process During a build, we check and rebuild any dependencies prior to potentially using them. Build: - DIND (this only produces a new docker image, no local code changes) - fnserver (built as part of the testing) On master, if everything works, then we release the built artifacts, if necessary: - DIND (this pushes a docker image and a tag) - fnserver (this builds the docker image and releases it, if necessary). Fnserver is dealt with last by the release script: all previous steps in CI use locally-run go tests rather than a docker file. When a commit happens, we need to know (a) if we need to rebuild a set of tools and artifacts (or whether we can continue to use published ones); and (b) if we need to release new versions of those tools, if all tests pass. We do this by identifying the previous release tag on origin/master (which is the release branch), then checking for changes between that point at the current one. Those changes may appear in various places in the tree: some simple boolean rules work out whether the change means we need to rebuild and rerelease. * Make the fnproject/fnserver build use the latest dind As docker bumps from 17.12.x, use whatever dind we just built. * Use bash
Docker-in-Docker Base Image
This is the base image for all docker-in-docker images.
The difference between this and the official docker images are that this will choose the best
filesystem automatically. The official ones use vfs (bad) by default unless you pass in a flag.
It will also attempt to mirror the default external interface's MTU to the dind network; this addresses a problem with running dind-based images on a kubernetes cluster with an overlay network that takes a chunk out of pods' MTUs.
Usage
Just use this as your base image and use CMD for your program, NOT ENTRYPOINT. This will handle the rest.
FROM fnproject/dind
# OTHER STUFF
CMD ["./myproggie"]