opamp-go icon indicating copy to clipboard operation
opamp-go copied to clipboard

Feature Request: Official Docker image for OpAMP server

Open kilian-goetz opened this issue 4 months ago • 6 comments

Problem

Currently, the opamp-go repository provides an example OpAMP server implementation (internal/examples/server), but there is no official Docker image available.
This makes it harder to try out the server in environments where Docker is the primary way to deploy observability components.

Users who want to test OpAMP alongside the OpenTelemetry Collector and the OpAMP Supervisor must currently:

  • clone the repo,
  • build the server binary with Go,
  • optionally create their own container image.

Proposal

It would be very helpful to provide an official Docker image for the OpAMP server, published to a trusted registry (e.g. ghcr.io/open-telemetry/opamp-server or on the open telemetry repository on the docker hub).

This image would allow users to easily spin up a minimal control-plane with:

  • the OpAMP server listening on 4320 (OpAMP protocol),
  • the UI exposed on 4321,
  • suitable defaults for trying out the protocol with the Supervisor.

Alternatives

  • Community members can build their own images (e.g. with a simple Dockerfile wrapping the example server), but this leads to fragmentation and unverified builds.
  • There are some unofficial images on Docker Hub, but they are not maintained by OpenTelemetry.

Use Cases

  • Developers who want to test OpAMP locally with Docker Compose (opamp-server + opampsupervisor).
  • Simplifying demos, tutorials, and documentation around OpAMP.

Additional Context

The OpenTelemetry ecosystem already provides official images for the Collector and OpAMP Supervisor.
Having an official image for the OpAMP server would complete the stack and make it much easier for new users to experiment with agent management.

kilian-goetz avatar Aug 28 '25 05:08 kilian-goetz

I think this is a good idea. Help wanted if someone wants to work on this.

We will want to build the image as part of the build process and auto-publish when new opamp-go versions are released. This should not require manual any manual work that increases maintenance burden.

tigrannajaryan avatar Aug 28 '25 19:08 tigrannajaryan

Hi, Is someone already working on this?

Saraah910 avatar Sep 14 '25 09:09 Saraah910

I had created two images for the server and agent

docker run --rm -p 4320:4320 -p 4321:4321  ghcr.io/juandemanjon/opamp-server-example:issue_443-7be09e8
2025/12/09 17:57:55.477638 [MAIN] OpAMP Server starting...
2025/12/09 17:57:55.478677 [MAIN] OpAMP Server running...
2025/12/09 17:58:20.817649 [OPAMP] Connection settings for instance 019b04438fc47bd6a03fe960482aa79b ConnectionSettingsStatuses_APPLYING (err=) hash=277e7fe3d6610ec0d7e138775800f5ba5c384a846fd081eff97b565bf08bb1a6
2025/12/09 17:58:20.818331 [OPAMP] Connection settings for instance 019b04438fc47bd6a03fe960482aa79b ConnectionSettingsStatuses_APPLIED (err=) hash=277e7fe3d6610ec0d7e138775800f5ba5c384a846fd081eff97b565bf08bb1a6
2025/12/09 17:58:20.818402 [OPAMP] Agent disconnected: websocket: close 1000 (normal): Normal closure
2025/12/09 17:58:20.864082 [OPAMP] Connection settings for instance 019b04438fc47bd6a03fe960482aa79b ConnectionSettingsStatuses_APPLYING (err=) hash=1d02a705cb821d9261f1b9b7f039ef1fe4a0431bc6c204060b7365e77eb3b569
2025/12/09 17:58:20.865788 [OPAMP] Connection settings for instance 019b04438fc47bd6a03fe960482aa79b ConnectionSettingsStatuses_APPLIED (err=) hash=1d02a705cb821d9261f1b9b7f039ef1fe4a0431bc6c204060b7365e77eb3b569
2025/12/09 17:58:30.796787 [OPAMP] Agent disconnected: websocket: close 1000 (normal): Normal closure
docker run --rm --network host  ghcr.io/juandemanjon/opamp-agent-example:issue_443-7be09e8  --endpoint wss://$(shell hostname):4320/v1/opamp --tls-insecure_skip_verify
2025/12/09 17:58:15 Agent starting, id=019b0443-8fc4-7bd6-a03f-e960482aa79b, type=io.opentelemetry.collector, version=1.0.0.
2025/12/09 17:58:20 Starting OpAMP client...
2025/12/09 17:58:20 OpAMP Client started.
2025/12/09 17:58:20 Connected to the server.
2025/12/09 17:58:20 Received remote config from server, hash=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.
2025/12/09 17:58:20 Received connection settings offers from server, hash=277e7fe3d6610ec0d7e138775800f5ba5c384a846fd081eff97b565bf08bb1a6.
2025/12/09 17:58:20 Reconnecting to verify new OpAMP settings.
2025/12/09 17:58:20 Disconnecting from server...
2025/12/09 17:58:20 Waiting for receiver to stop.
2025/12/09 17:58:20 Client skipping connection status state update from ConnectionSettingsStatuses_APPLIED to ConnectionSettingsStatuses_APPLIED
2025/12/09 17:58:20 Receiver stopped.
2025/12/09 17:58:20 Using new certificate
2025/12/09 17:58:20 Starting OpAMP client...
2025/12/09 17:58:20 OpAMP Client started.
2025/12/09 17:58:20 Successfully connected to server. Accepting new tls config.
2025/12/09 17:58:20 Connected to the server.
2025/12/09 17:58:20 Received remote config from server, hash=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.
2025/12/09 17:58:20 Received connection settings offers from server, hash=1d02a705cb821d9261f1b9b7f039ef1fe4a0431bc6c204060b7365e77eb3b569.
^C2025/12/09 17:58:30 Agent shutting down...

I will send a PR soon

juandemanjon avatar Dec 09 '25 18:12 juandemanjon