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
Dockerfile support #83
Comments
@timbmg, thank you for the suggestion. My hunch is that the scope of the library would start ballooning a bit if we start introducing build steps. Having said that, you raise a good point that it's available for Is there any reason why running |
I can't really imagine a workflow where this could be useful. Surely the other dependencies will be built beforehand, and if they're not then docker-compose will build them. |
Was just looking for exactly this feature - I would like to be able to start a database container, but I need it to have some additional extensions to be installed first. The beauty of test containers is that I don't need to build anything else prior to starting my tests - I start them and it just works. But if this is not supported then I have to come up with some fixture that does that for me, perhaps using the provided docker client. |
@tillahoffmann This appears to be supported in Java. |
+1 :) |
I have a use case where I would like to use Dockerfile.
I han API designed with FastAPI and I would like to leverage the power of testcontainers to test the build and readiness of my API My tests would look like : def test_docker_run_with_dockerfile():
fastapi_container = FastAPIContainer("fastapi:local", dockerfile="/workspace/my-api/", port=8000)
with fastapi_container as fastapi:
url = f"http://{fastapi.get_container_host_ip()}:{fastapi.get_exposed_port(fastapi.port)}/"
r = requests.get(url)
logging.info(r.text)
assert r.status_code == 200
assert "Welcome to fastapi with dockerfile!" in r.text |
i dont know where it would fall on our list of priorities but i think it would be acceptable for this library to have something like: @Test
public void dockerfileBuilderWorks() {
ImageFromDockerfile image = new ImageFromDockerfile()
.withFileFromClasspath("test.txt", "mappable-resource/test-resource.txt")
.withFileFromString("folder/someFile.txt", "hello")
.withDockerfileFromBuilder(builder -> {
builder
.from("alpine:3.16")
.workDir("/app")
.add("test.txt", "test file.txt")
.run("ls", "-la", "/app/test file.txt")
.copy("folder/someFile.txt", "/someFile.txt")
.expose(80, 8080)
.cmd("while true; do cat /someFile.txt | nc -l -p 80; done");
});
verifyImage(image);
} |
Hello! |
the potential implementation in #455 is very interesting but id like to figure out how we can do this without passing image and dockerfile separately. whereas the reference implementation from java uses a DockerImage class, we can have a ill assign the issue to you for now but I think we are generally looking for feedback from any potential users or contributors about a better API design (or testing ideas). |
I totally agree with you. I also had a thought about another way to implement it using a specific class for image building without changing the docker client class. I'm even more confortable with it! I'll propose you changes with another way of doing that. |
Hello @alexanderankin! |
@alexanderankin you asked for some feedback and alternative API design, I hope you will find #559 Interesting. |
I was in the middle of job switching when i was added as contributor, the new job has really kicked up a notch and I haven't had time to spend on testcontainers all that much. to be clear, this issue is not a priority for the project. It is at least below fixing DinD, MacOS/Windows, and ipv6/ipv4 stuff, things that prevent people using the library. i re-opened this as a nice to have, not a core requirement. hope to be able to revisit soon. |
Similar to allowing to run docker-compose files, would be great to just run a Dockerfile.
The text was updated successfully, but these errors were encountered: