the command :
docker build -t nginx-ubuntu .
whith the Dockerfile below :
FROM ubuntu:12.10 RUN apt-get update RUN apt-get -y install libpcre3 libssl-dev RUN apt-get -y install libpcre3-dev RUN apt-get -y install wget zip gcc RUN wget http://nginx.org/download/nginx-1.4.1.tar.gz RUN gunzip nginx-1.4.1.tar.gz RUN tar -xf nginx-1.4.1.tar RUN wget --no-check-certificate https://github.com/max-l/nginx_accept_language_module/archive/master.zip RUN unzip master RUN cd nginx-1.4.1 RUN ./configure --add-module=../nginx_accept_language_module-master --with-http_ssl_module --with-pcre=/lib/x86_64-linux-gnu --with-openssl=/usr/lib/x86_64-linux-gnu
Fails at the last line (./configure ...)
If I remove the last line and run a bash in the container, and execute the last line manually, it works.
I would expect that whatever command runs successfully within a container should work when the command is appended in the Dockerfile (prefixed by RUN)
am I missing something ?
When I called
wget
ortar
with RUN I needed to specify a path, it looks like ADD is the correct approach if you want to use WORKDIR as it's path instead. So either of the below resolved my issue.RUN
or
ADD
The second approach prevented me from needing to install wget in the container.
As an alternative to @creak's answer, you can change the default working directory in a Dockerfile with the
WORKDIR
command:This also affects the default directory when you use
docker run
(overridden by the-w
switch).The pwd is not persistent across RUN commands. You need to cd and configure within the same RUN.
This Dockerfile works fine: