Skip to content

Bug: DockerImage path arg is misleading #610

Closed

Description

@black-snow

Describe the bug

testcontainers.core.image.DockerImage has a constructor arg path with the following docs:

path – Path to the Dockerfile to build the image

But actually this doesn't seem to be true. It's rather the context, the path to the directory to build in and the dockerfile itself must be named Dockerfile. Especially for testing this is very unhandy. I often have several dockerfiles in the same directory. I'd expect bein able to pass a context and the actual path to the dockerfile, like

with DockerImage(dockerfile="./caseA.Dockerfile", context=".", tag="casea:latest") as image:
     pass

To Reproduce

  • have a test.Dockerfile
  • with DockerImage(path="./test.Dockerfile", tag="test") as image: ...
  • see not too helpful error message from docker itself bubble up

Runtime environment

not relevant


P.S.: build-args would also be handy

Activity

  1. alexanderankin commented on Jun 20, 2024

    @alexanderankin
    Member

    so, that's a mistake - I'm pretty busy with my job these days but will review patches, seems like something to fix (and add re: build/args).

    i might even argue for calling adding build/args a fix, as it makes our api more congruent with the docker api.

  2. black-snow commented on Jun 21, 2024

    @black-snow
    ContributorAuthor

    I'll take a look at it.

  3. black-snow commented on Jun 21, 2024

    @black-snow
    ContributorAuthor

    Err... make tests in the devcontainer leaves me with 32 failed, 42 passed, 3 warnings in 61.63s

    /edit: locally they look better but you have to poetry install -E registry - only 26 tests fails then --- there should really be a readme for contributors

  4. alexanderankin commented on Jun 21, 2024

    @alexanderankin
    Member

    i think that makes sense if you are on windows. its on my list to find a piece of terraform code that creates a windows VM in aws, so i can develop against windows, lots of challenges there. (cc @kiview)

  5. alexanderankin commented on Jun 21, 2024

    @alexanderankin
    Member

    @black-snow you should be poetry install --with dev --all-extras if you are trying to run the full test suite (like pytest -s)

  6. black-snow commented on Jun 21, 2024

    @black-snow
    ContributorAuthor

    @alexanderankin I'm on Ubuntu 24 right now. Even with all the extras 30 tests still fail.

  7. black-snow commented on Jun 21, 2024

    @black-snow
    ContributorAuthor

    From https://docker-py.readthedocs.io/en/stable/images.html#docker.models.images.ImageCollection.build it's not very clear what exactly the path is either. Looking at the code I'm pretty sure this is not what I expect. So I might have to redirect this to docker-py first.

    It's totally fine to docker build -t whatevs -f some/sub/dir/my.Dockerfile . - yet the code seems to require the dockerfile to be top-level in the path, which is treated as context.

    /edit: okay dockerfile can be a path within path ... the naming seems quite unfortunate

  8. added a commit that references this issue on Jun 22, 2024
    ead0f79
  9. alexanderankin commented on Jun 23, 2024

    @alexanderankin
    Member

    @black-snow do you have your docker socket visible to your user? e.g. i think by default the docker socket has these permissions:

    $ ll /var/run/docker.sock 
    srw-rw---- 1 root docker 0 Jun 23 14:33 /var/run/docker.sock=
    

    and then you need to be in the docker group:

    $ groups | tr ' ' '\n' | cat -n | grep docker
        11	docker
    
  10. black-snow commented on Jun 27, 2024

    @black-snow
    ContributorAuthor

    @alexanderankin I have Docker Desktop on this machine an it keeps the sockets in ~/docker/desktop/docker.sock.

    Never bothered to check on this machine - actually I'm not in the docker group here. But apparently this isn't necessary with recent Docker Desktop.

    /edit /var/run/docker.sock seems to be baked in to some places

  11. alexanderankin commented on Jun 28, 2024

    @alexanderankin
    Member

    i opened #621 so that I can find this discussion easier later, never heard of docker desktop on linux before

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions