user27654321
user27654321

Reputation: 47

Docker- Do we need to include RUN command in Dockerfile

I have a python code and to convert it to docker image, I can use below command:

sudo docker build -t customdocker .

This converts python code to docker image. To convert it I use a Dockerfile with below commands:

FROM python:3

ADD my_script.py /

ADD user.conf /srv/config/conf.d/

RUN pip3 install <some-package>

CMD [ "python3", "./my_script.py" ]

In this, we have RUN command which install required packages. Lets say if we have deleted the image for some reason and want to build it again, so is there any way we can skip this RUN step to save some time because I think this is already installed.

Also in my code I am using a file user.conf which is in other directory. So for that I am including this in DOckerfile and also saving a copy of it in current directory. Is there a way in docker where I can define my working directory so that docker image searches for the file inside those directories.

Thanks

Upvotes: 1

Views: 102

Answers (2)

Pranav Aggarwal
Pranav Aggarwal

Reputation: 645

Answering your first question: A docker image holds everything related to your python environment including the packages you install. When you delete the image then the packages are also deleted from the image. Therefore, no you cannot skip that step.

Now on to your second question, you can bind a direectory while starting the container by:

docker run -v /directory-you-want-to-mount:/src/config/ customdocker

You can also set the working directory with -w flag.

docker  run -w /path/to/dir/ -i -t  customdocker

https://docs.docker.com/v1.10/engine/reference/commandline/run/

Upvotes: 1

sanath meti
sanath meti

Reputation: 6603

Yes you cannot remove the RUN or other statements in dockerfile, if you want to build the docker image again after deleteing.

You use the command WORKDIR in your dockerfile but its scope will be within the docker images, i.e when you create the container from the image workdir will be set to that metioned in WORKDIR

For ex :

WORKDIR  /srv/config/conf.d/

This /srv/config/conf.d/ will set as workingdir, but you have to use below in dockerfile while building in-order to copy that file in specified location

ADD user.conf /srv/config/conf.d/

Upvotes: 1

Related Questions