For the last 2 days I was working on some Docker containers that
will/should make our (devs) daily work a lot easier. Let's start with how
it currently looks:
$ docker/build.sh -h
Usage: build.sh [OPTIONS]
Build the current local TinkerPop project in a Docker container.
Options are:
-t, --tests run standard test suite
-i, --integration-tests run integration tests
-n, --neo4j include Neo4j
-j, --java-docs build Java docs
-d, --docs build user docs
-h, --help show this message
The options should make it clear what it's good for. But to name a few more
advantages, especially for those, who are not too familiar with Docker:
- each build will be started in a clean environment (no old jar files
that could mess up your test results)
- you can continue to work on your code and don't have to worry about
impacts on the tests that run inside the Docker container
- same OS (ubuntu:trusty) for everybody; no matter if your local OS is
Linux, OSX or Windows, the container will always run the tests on top of
Ubuntu (no more *"your scripts don't work on my Mac"*)
- you can start multiple builds in parallel
- the build container will automatically install (and start if needed)
the correct Hadoop version (defined in pom.xml); in the future we could do
the same for Spark Server
- after building the docs, it will start a simple web server and give
you the URL to view it (real http://, no file:/// crap)
There's probably more, but I think that's impressive enough. The only
disadvantage is, that since each build starts in a clean environment, it
will always have to download all maven dependencies. However, I think all
the advantage compensate that little overhead.
These changes are currently in branch docker/
<https://github.com/apache/incubator-tinkerpop/tree/docker> and could be
merged into master/ and tp31/ at any time. But, since this is a DISCUSS
thread, the question is: do people like it?
Cheers,
Daniel