quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.73k stars 2.67k forks source link

Start devservices by building custom Dockerfile #36301

Closed Eng-Fouad closed 1 year ago

Eng-Fouad commented 1 year ago

Description

One can write custom Dockerfile then the devservices image can be built on the fly and run via testcontainers's GenericContainer.

I needed this feature to help me fetching code of other microservices from git repos then run them locally via docker at Quarkus startup. It would be a nice feature to have in Quarkus.

This also opens a lot of possibilities and run anything as devservices.

quarkus-bot[bot] commented 1 year ago

/cc @geoand (devservices), @stuartwdouglas (devservices)

geoand commented 1 year ago

So you are envisioning having Quarkus just spin up some user provided container and not actually set any configuration properties (which is one of the real useful points about DevServices)?

Eng-Fouad commented 1 year ago

So you are envisioning having Quarkus just spin up some user provided container and not actually set any configuration properties (which is one of the real useful points about DevServices)?

Yes, and testcontainers already supports building custom images on the fly: https://java.testcontainers.org/features/creating_images/

We still need to specify some config properties, such as environment variables, mapping exposed ports, etc.

geoand commented 1 year ago

Can you give a more concrete example of what you would like to do with this feature?

Eng-Fouad commented 1 year ago

Can you give a more concrete example of what you would like to do with this feature?

I need to integrate my Quarkus app with external service that is developed and maintained by different team.

I wrote Dockerfile that git-clone latest commit of the external service and then run it. Instead of building the docker image manually each time, I would like to make Quarkus (upon starting) to build the custom image on the fly and run it on a container.

I am not sure if this feature is related to devservices or maybe it can be in a separate Quarkiverse extension.

geoand commented 1 year ago

Okay, so this is basically a duplicate of https://github.com/quarkusio/quarkus/issues/20037. The problem there is that we never really figured out what a good user experience would be... For example when you need to start this external service, what if that needs a database, or a message broker?

stuartwdouglas commented 1 year ago

I actually had a PoC of this: https://github.com/stuartwdouglas/quarkus/tree/generic-devservices

I didn't follow it through because I was unsure if there was actually user demand.