Skip to content
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

Adding files to build using custom Dockerfile (file not found due to lack of context) #64

Closed
codeitagile opened this issue Jun 10, 2014 · 4 comments

Comments

@codeitagile
Copy link
Contributor

I am specifying a custom dockerfile in my .kitchen.yml.

Reading through how test-kitchen handles this, I can see it shells out using mixlib-shellout and that my docker file is passed as an :input parameter.

By my initial reading of test-kitchen and mixlib-shellout code this means the Dockerfile will be passed to docker client via stdin, and as such (according to my limited knowledge of docker) has no context.

Does this mean I cannot use ADD statements within my custom Dockerfiles when using your driver? Without a context, docker will be unable to locate files.

Any advice for a relative docker newbie would be gratefully received.

@codeitagile codeitagile changed the title Adding files to build using custom Dockerfile (file not found) Adding files to build using custom Dockerfile (file not found due to lack of context) Jun 10, 2014
@adnichols
Copy link
Contributor

I believe you are correct about the lack of context - you can still ADD using a URL. My suggestion here would be not to use the Dockerfile for building the image, build that outside of kitchen-docker and publish to a repository where context is present. You can then use the Dockerfile as a mechanism for using your custom image without any of the inherent modifications that kitchen-docker performs to the image before starting it up - your Dockerfile would simply contain a "FROM" line and that's it.

@fnichol
Copy link
Contributor

fnichol commented Jun 10, 2014

Agreed, that would be my read as well. Otherwise it would tar and upload a potentially massive current working directory just to make the image.

Is there something specific you're trying to get onto the image? Does it need to be there before Chef is installed? We may be able to fall back on some other tricks…

@codeitagile
Copy link
Contributor Author

Thanks for your advice @adnichols, that would work but it will not be as cohesive an approach as I would like.

It comes down to when things should happen in the pipeline I have in mind - which may well be flawed and represent nothing more than my limited experience with docker and kitchen tools.

@fnichol, I wanted to add a shell script consisting of a number of pre-test steps that need to be taken prior to verify running through my specs. Steps like restarting all the services provisioned via chef for example, as (sometimes necessary) sanity check.

My approach to this was to run a script that I added to the build via the ADD in the dockerfile, before /usr/sbin/sshd -D -o UseDNS=no -o UsePAM=no is executed.

That may very well be a naive approach, but it seemed logical to me, and kept the docker specifics of my test setup coupled to test-kitchen tool-chain, and not polluting my base images; if you follow me.

@codeitagile
Copy link
Contributor Author

Now have written it down and since I did not get to the stage of actually testing this approach, what I was trying to do may not be such a great idea anyway. I think I can achieve what I want with Chef.

Back to the drawing board I think. Thanks for your input.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants