testcontainers / testcontainers-dotnet

A library to support tests with throwaway instances of Docker containers for all compatible .NET Standard versions.

Home Page:https://dotnet.testcontainers.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Enhancement]: Support for custom .dockerignore files

pvervaet opened this issue · comments

Problem

In my buildcontext there live several dockerfiles. Each one has it's own dockerignore file.
It seems like there is no way to specify a custom dockerignore file at the moment.
Would it be possible to support the standard approach for dockerignore files? https://docs.docker.com/build/building/context/#dockerignore-files

Solution

  • Either support the custom naming convention and automatically pick the right dockerignore file
  • Or have a way to specify the file .WithDockerignore("/somefolder/custom.Dockerfile.dockerignore")

Benefit

  • Support basic docker functionality
  • Many dockerfiles will be useable within one context. Now it's more or less impossible.

Alternatives

I see the 2 proposed solutions as only options

Would you like to help contributing this enhancement?

No

Nobody?

I am not going to implement this soon, but if someone would like to implement this feature in the meantime, I would like to provide some guidance. The .dockerignore file name is passed to the Tar(CancellationToken) member here:

var dockerIgnoreFile = new DockerIgnoreFile(dockerfileDirectoryPath, ".dockerignore", dockerfileFilePath, _logger);

We need to pass the correct file name. We can (probably) simply check whether a specific ignore file exists for the Dockerfile or not.

I have a branch ready with this change but I get an error when trying to push the branch:

Error encountered while pushing to the remote repository: Git failed with a fatal error.
Git failed with a fatal error.
unable to access 'https://github.com/testcontainers/testcontainers-dotnet.git/': The requested URL returned error: 403

I have to be made contributer or something @HofmeisterAn ?

You cannot simply push to the repository, please see: Contributing to a project.