Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker - Override or remove ENTRYPOINT from a base image

Tags:

I'm using Docker (version 1.12.2, build bb80604) to setup a simple image/container with Gatling (Load Testing tool) + NodeJS. So, I pulled this Docker/Gatling base image and created my own Dockerfile to install NodeJS on it.

However, the Docker/Gatling base image above has an ENTRYPOINT already defined to call Gatling straightaway and then automatically exits the container. It looks like this:

ENTRYPOINT ["gatling.sh"] 

What I'm trying to achieve is: I want to run a second command (my own NodeJS script to parse the test results), however I couldn't find a solution so far (I tried overriding the ENTRYPOINT, different combinations of ENTRYPOINT and CMD, but no success).

Here is how my current Dockerfile looks like:

FROM denvazh/gatling:2.2.3  RUN apk update \ && apk add -U bash \ && apk add nodejs=6.7.0-r0  COPY simulations /opt/gatling/user-files/simulations COPY trigger-test-and-parser.sh /opt/gatling/  RUN chmod +x /opt/gatling/trigger-test-and-parser.sh  ENTRYPOINT ["bash", "/opt/gatling/trigger-test-and-parser.sh"] 

Here is the command I'm using to build my image based on my Dockerfile:

docker build --no-cache -t gatling-nodejs:v8 . 

And this is the command I'm using to run my container:

docker run -i -v "$PWD/results":/opt/gatling/results -v "$PWD":/opt/gatling/git.campmon.com/rodrigot/platform-hps-perf-test gatling-nodejs:v8 

And this is the shellscript (trigger-test-and-parser.sh) I'd like to execute once the container starts (it should trigger Gatling and then runs my NodeJS parser):

gatling.sh -s MicroserviceHPSPubSubRatePerfTest.scala node publish-rate-to-team-city.js 

Any ideas or tweaks so I can run both commands once my container starts?

Thanks a lot!

like image 768
user2253130 Avatar asked Dec 18 '16 10:12

user2253130


People also ask

Can you override docker entrypoint?

Docker Entrypoint ENTRYPOINT is the other instruction used to configure how the container will run. Just like with CMD, you need to specify a command and parameters. However, in the case of ENTRYPOINT we cannot override the ENTRYPOINT instruction by adding command-line parameters to the `docker run` command.

How do I change the entry point of a docker image?

Create image with Dockerfile. Run container from image with -ti --entrypoint /bin/bash at some point afterwards to make some changes. Make changes inside container and run docker commit to create new image, with new tag. When the new image is run, the original CMD entry from the original Dockerfile is no longer run.

Does a docker image need an entrypoint?

Using ENTRYPOINT or CMDBoth ENTRYPOINT and CMD are essential for building and running Dockerfiles—it simply depends on your use case. As a general rule of thumb: Opt for ENTRYPOINT instructions when building an executable Docker image using commands that always need to be executed.

Does CMD override entrypoint?

If you use the ENTRYPOINT instruction in the shell form and you provide additional arguments using CLI parameters or even through the CMD commands, the ENTRYPOINT instruction overrides all of these.


1 Answers

Set ENTRYPOINT to /usr/bin/env. Then set CMD to be what you want run.

like image 61
Graham Dumpleton Avatar answered Sep 24 '22 13:09

Graham Dumpleton