Skip to content

Conversation

@USA-RedDragon
Copy link

@USA-RedDragon USA-RedDragon commented Nov 16, 2025

This commit introduces tini (https://github.com/krallin/tini) as an init process for the container. This should fix several issues that arise from the current Docker setup.

Currently, the container runs sym_service via a shell command (sh -c "/opt/symmetric-ds/bin/sym_service start && tail -F ..."). This setup causes the shell to become PID 1, and signals such as SIGTERM or SIGINT sent to the container do not reliably reach sym_service. In practice, this leads to:

  • Ctrl+C in local testing often times out because the service never receives the termination signal.
  • docker stop commands take longer than necessary, as the service cannot shut down gracefully.
  • Kubernetes deployments experience delayed pod termination.

Tini (https://github.com/krallin/tini) acts as a minimal init process that properly forwards termination signals to child processes. It is lightweight, widely adopted, and has been included in Docker since version 1.13.

With this change:

  • sym_service will receive termination signals promptly.
  • Local testing (Ctrl+C) and docker stop behave predictably.
  • Kubernetes pod shutdown and rollout times are reduced and predictable.

The Dockerfile remains minimal and maintainable, with only a single dependency added.

This commit introduces `tini` (https://github.com/krallin/tini, as seen in Docker >= 1.13) as an init process for the container. This should fix several issues that arise from the current Docker setup.

Currently, the container runs `sym_service` via a shell command (`sh -c "/opt/symmetric-ds/bin/sym_service start && tail -F ..."`). This setup causes the shell to become PID 1, and signals such as `SIGTERM` or `SIGINT` sent to the container do not reliably reach `sym_service`. In practice, this leads to:

- Ctrl+C in local testing often times out because the service never receives the termination signal.
- `docker stop` commands take longer than necessary, as the service cannot shut down gracefully.
- Kubernetes deployments experience delayed pod termination.
@USA-RedDragon USA-RedDragon requested a review from a team as a code owner November 16, 2025 23:22
USA-RedDragon added a commit to USA-RedDragon/dockers that referenced this pull request Nov 17, 2025
until jumpmindinc/symmetric-ds#456  is merged or otherwise fixed
USA-RedDragon added a commit to USA-RedDragon/dockers that referenced this pull request Nov 17, 2025
until jumpmindinc/symmetric-ds#456  is merged or otherwise fixed
@pavel-jm
Copy link
Contributor

Thank you for this suggestion! Will discuss this week with the team and get back to you.

@awebbdev1
Copy link
Contributor

@USA-RedDragon we want to ensure tini allows for a graceful and clean shutdown before termination, especially allowing busy database connections to finish work, return to the pool, and for resource de-allocation. Do you have a way to test this with SymmetricDS and tini to ensure this happens?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants