该命令如下:
docker build -t nginx-ubuntu .
使用下面的Docker文件:
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
在最后一行(./CONFIGURE...)失败
如果我删除最后一行并在容器中运行bash,然后手动执行最后一行,它会起作用。
我希望在容器中成功运行的任何命令在将命令追加到Dockerfile中(前缀为run)时都能正常工作
我错过了什么吗?
4条答案
按热度按时间vlurs2pr1#
PWD在运行命令之间不是持久的。您需要在同一次运行中执行cd和配置。
此Dockerfile运行良好:
jum4pzuy2#
作为@creak答案的替代方案,您可以使用
WORKDIR
命令更改Dockerfile中的默认工作目录:当您使用
docker run
(被-w
开关覆盖)时,这也会影响默认目录。mdfafbf13#
当我用run调用
wget
或tar
时,我需要指定一个路径,如果您想使用WORKDIR作为它的路径,那么ADD看起来是正确的方法。因此,下面这两个方法中的任何一个都解决了我的问题。奔跑
或
添加
第二种方法使我不需要在容器中安装wget。
dgsult0t4#
执行此操作的另一种方法是使用
\
运算符开始一个新行并继续执行另一个命令示例