Defining context in docker compose - Error: Cannot locate specified Dockerfile: Dockerfile

docker-compose

#1
  • Goal: to use the same script cv.sh for multiple containers i’m deploying
  • Problem:
    [Info]       Building on arm02
    [Info]       Pulling previous images for caching purposes...
    [Success]    Successfully pulled cache images
    [Error]      Some services failed to build:
    [Error]        Service: cv_driver
    [Error]          Error: Cannot locate specified Dockerfile: Dockerfile
    [Error]      Not deploying release.
  • My docker-compose.yml File looks the following:
version: '2'
services:
  cv_driver:
    build:
      context: .
      dockerfile: .cv/cv_driver/Dockerfile.template
    privileged: true
    restart: always
  • My Repo looks like this
β”œβ”€β”€ cv
β”‚   β”œβ”€β”€ cv.sh
β”‚   β”œβ”€β”€ cv_driver
β”‚   β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”‚   └── Dockerfile.template
β”‚   β”œβ”€β”€ cv_logic
β”‚   β”‚   └── Dockerfile.template
└── docker-compose.yml

I tried it with referencing to cd_driver folder, the cv_driver/Dockerfile and cv_driver/Dockerfile.template


#5

Have you tried simplifying the build directive?

version: '2'
services:
  cv_driver:
    build: cv/cv_driver/Dockerfile.template
    privileged: true
    restart: always

Laurent


#6

Hello,

This is not supported yet, but we are working on it: https://github.com/resin-io/resin-builder/issues/420


#7

Wrong url in my last message, sorry: https://github.com/resin-io-modules/resin-multibuild/issues/19


#22

Okay, thanks for clarifying.

looking foreward to seeing this implemented :slight_smile:


#24

@zvin

is there an update on this issue? or any information on when it might be integrated?


#25

Hello zagatta-sonah,

Sorry I don’t have any update on this issue yet.


#30

Hello zvin,

I just wanted to give this another push, I know it’s not yet in from the PR.

I really hope we do see this feature soon, though, sharing code between containers is a pain right now :stuck_out_tongue:

Have a great day and thanks for your efforts.

Greetings, Tarek


#31

Hi, When you define a context in docker-compose, the dockerfile: bit is relative to that context. So the proper configuration would be:

test:
build:
context: …/
dockerfile: docker/cli/Dockerfile

I hope this helps…


#35

Hai,
Can u Please try this when Composing the Context in Docker file, the file should be located.
$ tree
.
β”œβ”€β”€ build
β”‚ └── etc.txt
β”œβ”€β”€ dockerfile
β”‚ └── Dockerfile.test
└── tools
└── docker
└── docker-compose.yml
Thanks,
Riya.
Docker Composer


#37

Hello @azharuddin , Hello @riyawilliams ,

I’m afraid the original question takes realtive paths into account.
The build context is specified as β€œ.” with the dockerfile specified relative to . as β€œ./cv/cv_driver/Dockerfile.template”. Building with these arguments however ignores the container completely.

I’m sorry but I think I don’t quite understand your example @riyawilliams . I know how it should work in principle. e.g the docker-compose.yml in your example should have a build context of β€œ.” and a dockerfile of β€œ./dockerfile/Dockerfile.test” but this won’t currently work in a multicontainer setup. It just ignores the container with those settings completely.

Edit: @lv82 Using the build directive like that works, yes, but you have no access to files and folders from the top level (the level at which the docker-compose resides) from the inside of the specified Dockerfile, because the context will be the parent directory of the Dockerfile, not the docker-compose.
(Actually this is our current approach, we would just like to load some folders from the top level from multiple Dockerfiles residing within some subfolders)

Greetings, Tarek


#41

Is there any update on this capability from your side?


#44

@Tschebbischeff as it happens I’ve just put up a PR which leads the way for this to be used on both our cloud servers and local builds.

The delay came from the fact that we needed large architectural changes in our build pipeline to be able to support. The ball is well and truly rolling though, so I don’t imagine it should be too long until this is available.

You can track the progress of this PR here: https://github.com/balena-io-modules/resin-bundle-resolve/pull/27

Note that there is more work in integrating the results of this into our build system, so even once this PR is merged, you won’t see this feature in production immediately.


#49

Thank you very much for your update and work on this, we are looking forward to seeing it implemented :slight_smile:

Greetings, Tarek