写了个Dockerfile,如何让nginx的配置文件读取宿主机上的文件呢?

这是我的Dockerfile:

FROM centos

MAINTAINER salamander ********@qq.com


RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel
# 添加文件
ADD http://nginx.org/download/nginx-1.12.1.tar.gz
RUN tar -zxvf nginx-1.12.1.tar.gz .
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.12.1 && ./configure --prefix=/usr/local/nginx && make && make install
RUN rm -vf /usr/local/nginx/conf/nginx.conf
COPY ./nginx_conf /usr/local/nginx/conf/nginx.conf


# Expose ports
EXPOSE 80


CMD service nginx start

我想设置Nginx实际的配置文件读取的位置为/home/www/docker/etc/nginx下
这个Dockerfile的路径是/home/www/docker下的

阅读 8.3k
2 个回答

我想问问, COPY .nginx_conf /usr/local/nginx/conf/nginx.conf 你应该写错了。应该写成 COPY nginx_conf /usr/local/nginx/conf/nginx.conf 这样吧。才是覆盖了 docker 里的 nginx.conf.

如果你想设置配置文件目录,那么可以在启动的时候,添加 -v 参数:

docker run -d -v $PWD/etc/nginx:/usr/local/nginx/conf/ YOUR_IMAGE_NAME

但是,我建议 nginx 还是直接使用官方镜像比较好:

FROM nginx:1.12

COPY etc/nginx /etc/nginx/conf.d/

EXPOSE 80

ENTRYPOINT ["nginx", "-g", "daemon off;"]

刚写了一篇关于 docker 的,你可以看看

./etc/nginx

build的时候本身就是相对路径

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进