Go to file
2015-11-24 15:54:37 -06:00
debezium-core Added debezium-core and MySQL binary log reading tests. 2015-11-24 15:54:37 -06:00
debezium-ingest-jdbc Added debezium-core and MySQL binary log reading tests. 2015-11-24 15:54:37 -06:00
debezium-ingest-mysql Added debezium-core and MySQL binary log reading tests. 2015-11-24 15:54:37 -06:00
debezium-ingest-postgres Added debezium-core and MySQL binary log reading tests. 2015-11-24 15:54:37 -06:00
support Added debezium-core and MySQL binary log reading tests. 2015-11-24 15:54:37 -06:00
.gitignore Initial project skeleton 2015-11-18 14:23:29 -06:00
LICENSE Initial project skeleton 2015-11-18 14:23:29 -06:00
pom.xml Added debezium-core and MySQL binary log reading tests. 2015-11-24 15:54:37 -06:00
README.md Used a different base image for MySQL. 2015-11-18 17:02:08 -06:00

== Requirements

The following software is required to build Debezium locally:

See the links above for installation instructions on your platform.

=== Docker

Many open source software projects use Java and Maven, but requiring Docker is less common. Debezium is designed to talk to a number of external systems, such as various databases and services, and our integration tests verify Debezium does this correctly. But rather than expect you have all of these software systems installed locally, Debezium's build system uses Docker to automatically download or create the necessary images and start containers for each of the systems. The integration tests can then use these services and verify Debezium behaves as expected, and when the integration tests finish, Debezum's build will automatically stop any containers that it started.

Debezium also has a few modules that are not written in Java, and so they have to be required on the target operating system. Docker lets our build do this using images with the target operating system(s) and all necessary development tools.

Using Docker has several advantages:

  1. You don't have to install, configure, and run specific versions of each external services on your local machine, or have access to them on your local network. Even if you do, Debezium's build won't use them.
  2. We can test multiple versions of an external service. Each module can start whatever containers it needs, so different modules can easily use different versions of the services.
  3. Everyone can run complete builds locally. You don't have to rely upon a remote continuous integration server running the build in an environment set up with all the required services.
  4. All builds are consistent. When multiple developers each build the same codebase, they should see exactly the same results -- as long as they're using the same or equivalent JDK, Maven, and Docker versions. That's because the containers will be running the same versions of the services on the same operating systems. Plus, all of the tests are designed to connect to the systems running in the containers, so nobody has to fiddle with connection properties or custom configurations specific to their local environments.
  5. No need to clean up the services, even if those services modify and store data locally. Docker images are cached, so building them reusing them to start containers is fast and consistent. However, Docker containers are never reused: they always start in their pristine initial state, and are discarded when they are shutdown. Integration tests rely upon containers, and so cleanup is handled automatically.