-
-
Notifications
You must be signed in to change notification settings - Fork 531
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
[Bug]: Issue with Port Mapping in ContainerRequest #2483
Comments
Thanks for opening this issue @wilsouza, before taking a deeper look, as a workaround, did you try paint "6379:6379" in the exposed ports attribute? Having a fixed port goes against the concepts testcontainers advocates, but we understand there are some use cases that need them. That's why we added the host config modifier. I'm not at my keyboard atm so I'd suggest taking a look in the codebase for a test using that 🤔 |
Thanks for sharing this workaround, it worked fine. I also got the same result by changing the expose ports attribute to use only the port as flollowing. req := testcontainers.ContainerRequest{
Image: "redis:6.2",
Name: "redis-int-test",
ExposedPorts: []string{"6379"},
WaitingFor: wait.ForLog("Ready to accept connections"),
HostConfigModifier: func(hc *container.HostConfig) {
hc.PortBindings = map[nat.Port][]nat.PortBinding{
"6379/tcp": {{HostIP: "0.0.0.0", HostPort: "6379"}},
}
},
}
I understand. I thought it was a bug, but if it's working as expected, feel free to close this issue. |
If the host config modifier does not set the port correctly, then it's a bug. I will try to repro locally to understand it better. |
I have submitted the PR #2512 to address the potential issue we've been discussing. This PR contains changes that I believe could resolve the problem. I would appreciate it if you could take some time to review the changes and provide your feedback. Please let me know if the modifications is not align with the project's standards and if they effectively address the issue. |
Testcontainers version
v0.30.0
Using the latest Testcontainers version?
Yes
Host OS
macOS Sonoma
Host arch
x86
Go version
1.22.2
Docker version
Client: Cloud integration: v1.0.35+desktop.13 Version: 26.0.0 API version: 1.45 Go version: go1.21.8 Git commit: 2ae903e Built: Wed Mar 20 15:14:46 2024 OS/Arch: darwin/amd64 Context: desktop-linux Server: Docker Desktop 4.29.0 (145265) Engine: Version: 26.0.0 API version: 1.45 (minimum version 1.24) Go version: go1.21.8 Git commit: 8b79278 Built: Wed Mar 20 15:18:01 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.28 GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0
Docker info
What happened?
I'm experiencing an issue when trying to map the Redis container port to the host's port 6379 using the ContainerRequest structure. The following code should work, but it doesn't. The docker container is not mapping the container port to host port. I suspect the problem might be related to issue #930.
The docker containers running after strat testcontainer:
If I can declare the exposedPorts with the protocol, should I be able to declare portBinding for it as well?
Additionally, I've noticed this piece of code that could be fixed by comparing only the port of each exposed port, instead of the full port/protocol string. Is there any issue with addressing the solution in this way?
I'm willing to open a PR to address this issue if needed. Please let me know if I can proceed with this.
Relevant log output
No response
Additional information
No response
The text was updated successfully, but these errors were encountered: