dockerspec | small Ruby Gem to run RSpec | Continuous Deployment library
kandi X-RAY | dockerspec Summary
kandi X-RAY | dockerspec Summary
A small Ruby Gem to run RSpec, Serverspec, Infrataster and Capybara tests against Dockerfiles or Docker images easily. This gem is designed to work out of the box on Travis CI, CircleCI and other similar CI environments.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- Builds the image from a Docker string
- Default configuration options .
- Builds image from a image
- Builds a template from the template
- Parse exception message
- Generate an error message
- Raises an error for the image
- Parses an error message
- Builds a file from a directory
- Builds the image from a directory
dockerspec Key Features
dockerspec Examples and Code Snippets
Community Discussions
Trending Discussions on dockerspec
QUESTION
After trying to test Dockerfiles with Dockerspec, I finally had an issue I can't resolve properly.
The problem is, I think, from Docker itself ; If I understand its process, an Entrypoint is only executed at run, but if the container stay started and I launch an "exec" command in, it's not re-called.
I think it's the wanted behavior.
But if the Entrypoint is a "gosu" script which precede all my commands, it's a problem...
Example
"myImage" has this Entrypoint :
gosu 1000:1000 "$@"
If I launch : docker run -it myImage id -u
The output is "1000".
If I start a container : docker run -it myImage bash
In this container, id -u
outputs "1000".
But if I start a new command in this container, it starts a new shell, and does not execute the Entrypoint, so : docker exec CONTAINER_ID id -u
Output "0", because the new shell is started as "root".
It there a way to execute each time the entrypoint ? Or re-use the shell open ?
Or a better way to do that ?
Or, maybe I haven't understand anything ? ;)
Thanks !
EDIT
After reading solutions proposed here, I understand that the problem is not how Docker works but how Serverspec works with ; my goal is to directly test a command as a docker run
argument, but Serverspec start a container and test commands with docker exec
.
So, the best solution is to found how get the stdout of the docker run
executed by Serverspec.
But, in my personal use-case, the best solution is maybe to not use Gosu but --user flag :)
...ANSWER
Answered 2017-May-01 at 19:32if your goal is to run the docker exec
with a specific user inside of the container, you can use the --user
option.
docker exec --user myuser container-name [... your command here]
If you want to run gosu
every time, you can specify that as the command with docker exec
docke exec container-name gosu 1000:1000 [your actual command here]
in my experience, the best way to encapsulate this into something easily re-usable is with a .sh script (or .cmd file in windows).
drop this into a file in your local folder... maybe gs
for example.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install dockerspec
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page