-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve podman compatibility on M1 for build test suites which use fabric8 docker-maven-plugin #25428
Comments
/cc @quarkusio/devtools |
Pull request incoming, once I get things sorted out. |
Here's some more context on the health check. The current pom.xmls tend to use tcp checks, of the form
These don't seem to be behaving well in podman on my M1. A
A
|
Confirmed user error(ish): filling in the timeout values gets the health check working.
|
you're right, mysql should not be checked just by it opening the port. It's weird, I knew about that as I've had similar problems on other projects and yet never noticed we had it wrong here - I guess we simply copied the approach from the postgresql module, which was the first one to be created: AFAIK the approach to monitor ports being opened works fine with postgresql (but only with postgresql). |
Fixed by above PRs, so closing. We're not there on M1, but we're closer. |
Describe the bug
#25339 improved podman compatibility in some of the test suites which use fabric8 containers for databases. However, I'm still seeing failures on Mac M1 with podman.
Once I worked out I needed to do
podman machine init -v $HOME:$HOME
for podman < 4.1, most of the issues I've been seeing relate to filesystem mounting and health checks.Volume mounts
The ':Z' SELinux access label seems to cause problems on M1. I think this is related to containers/podman#13631. (
src/main/java/io/quarkus/deployment/pkg/steps/NativeImageBuildLocalContainerRunner.java
also used :Z so I'm not sure why I didn't have to change anything there. )Health checks
This is more troublesome. I'm struggling to get the docker maven plugin to successfully
<wait>
for mariadb to be up. I've tried a range of options.For example, I could not find a wait of doing a (from http://dmp.fabric8.io/#build-healthcheck) that didn't treat the
<time>
as both a minimum and a maximum. Several of the options I tried always passed, even if the container wasn't ready, or always failed, even if the container was actually ready.What about test containers?
The fabric8 plugin is not under super-active development, and we're starting to see some non-ideal behaviours. Longer term, we probably want to move away from the fabric8 docker-maven-plugin to test containers, but last time we looked into it, the fabric8 plugin gave us more flexibility to do things like define a sophisticated health check for container readiness, or inject a volume into the container with config to speed up startup.
Expected behavior
Tests should pass cleanly with
TESTCONTAINERS_RYUK_DISABLED="true" ./mvnw -Dquickly -DskipTests=false -Dstart-containers
Actual behavior
SELinux access issues
Health checks
I'm seeing a range of problematic behaviours, which mostly involve waits reporting themselves as failed when they should be successful, or reporting as failed when they should be successful.
How to Reproduce?
on M1 without docker installed (only podman)
Output of
uname -a
orver
Darwin hcummins-mac 21.4.0 Darwin Kernel Version 21.4.0: Fri Mar 18 00:46:32 PDT 2022; root:xnu-8020.101.4~15/RELEASE_ARM64_T6000 arm64
Output of
java -version
No response
GraalVM version (if different from Java)
No response
Quarkus version or git rev
No response
Build tool (ie. output of
mvnw --version
orgradlew --version
)No response
Additional information
No response
The text was updated successfully, but these errors were encountered: