-
-
Notifications
You must be signed in to change notification settings - Fork 602
[Bug]: Explicitely mapped ports break default readiness hook #2652
Copy link
Copy link
Closed
Labels
bugAn issue with the libraryAn issue with the library
Description
Testcontainers version
0.32.0
Using the latest Testcontainers version?
Yes
Host OS
Linux (WSL)
Host arch
x86_64
Go version
1.22.3
Docker version
Client: Docker Engine - Community
Version: 26.0.1
API version: 1.45
Go version: go1.21.9
Git commit: d260a54
Built: Thu Apr 11 10:53:21 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 26.0.1
API version: 1.45 (minimum version 1.24)
Go version: go1.21.9
Git commit: 60b9add
Built: Thu Apr 11 10:53:21 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.31
GitCommit: e377cd56a71523140ca6ae87e30244719194a521
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0Docker info
Client: Docker Engine - Community
Version: 26.0.1
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.13.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.26.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
scan: Docker Scan (Docker Inc.)
Version: v0.23.0
Path: /usr/libexec/docker/cli-plugins/docker-scan
Server:
Containers: 7
Running: 1
Paused: 0
Stopped: 6
Images: 32
Server Version: 26.0.1
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: e377cd56a71523140ca6ae87e30244719194a521
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 5.15.153.1-microsoft-standard-WSL2
Operating System: Ubuntu 22.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 6
Total Memory: 15.62GiB
Name: VD011420
ID: 5f7f091e-64fd-40bb-bfdf-ad87e9ae09ec
Docker Root Dir: /var/lib/docker
Debug Mode: false
Username: robinvanderstraeten352
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device supportWhat happened?
Since version 0.32.0 of testcontainers, creating a container with an explicit port mapping in ExposedPorts (for instance "4443:4443/tcp") no longer works. The container starts correctly, but a newly introduced readiness check fails. It incorrectly parses the input given in ExposedPorts and concludes that the container did not start correctly. For context, I'm talking about the logic here.
I'm aware that testcontainers creates a port mapping for you, but sometimes you need to know the port before the container starts. Here's an example snippet:
var port = "4443/tcp"
var hostPort = "4443"
req := testcontainers.GenericContainerRequest{
ContainerRequest: testcontainers.ContainerRequest{
Image: "fsouza/fake-gcs-server",
ExposedPorts: []string{fmt.Sprintf("%s:%s", hostPort, port)},
Cmd: []string{"-scheme", "http", "-public-host", fmt.Sprintf("localhost:%s", hostPort)},
WaitingFor: wait.ForHTTP("/storage/v1/b").WithPort(nat.Port(port)),
},
Started: true,
}Relevant log output
failed to start container: all exposed ports, [4443:4443/tcp], were not mapped in 5s: port 4443:4443/tcp is not mapped yetAdditional information
I have made a fork with a suggestion for a fix. robinvanderstraeten-klarrio@193ab06
If this is the right approach I'll submit a PR.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugAn issue with the libraryAn issue with the library