Nginx———Dockerfile

本文探讨Docker中EXPOSE与CMD配置的实际应用,解析/bin/bash对CMD的影响及正确处理方法,分享Nginx容器化部署经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习一下,发现几个问题。

首先是EXPOSE配置,使用-P引用dockerfile里的端口配置,会随机在本地开启一个端口用来映射,所以我个人感觉这个好像没啥用?每次创建容器还是得手动加上-p参数,是我的用法有问题么。。

然后是CMD里的命令不执行,试了好半天才找到原因,因为我先前创建容器习惯性的在最后加上/bin/bash来启动,bash会覆盖掉CMD配置从而导致nginx的启动命令不生效,我还一直以为是"daemon off;"没生效,容器启动nginx的话必须要加上这个参数的,我这个是仿照别人的例子写的把这行追加进了nginx的配置文件。

如果不使用/bin/bash的话,使用docker attach想进入容器的时候会卡住,可以用docker exec -it containerID /bin/bash方式进入容器,退出使用ctrl + 大写P + 大写Q。

这个我单独又试了下,不使用/bin/bash,哪怕不使用-d参数直接创建以交互模式一样进入不了容器,会卡在那里,只能中断,然后容器就会关闭,要再次启动下再用上面的方法进入。

 

# This is Nginx Dockerfile
# 镜像
FROM centos:latest
# 维护者信息
MAINTAINER tandabao

# 下载nginx并编译安装
ADD http://nginx.org/download/nginx-1.17.8.tar.gz ./
RUN useradd -M -s /sbin/nologin nginx
RUN yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ make cmake && \
        tar xf nginx-1.17.8.tar.gz -C /usr/local/
WORKDIR /usr/local/nginx-1.17.8

RUN ./configure \
        --user=nginx \
        --group=nginx \
        --prefix=/usr/local/nginx \
        --sbin-path=/usr/local/nginx/bin/nginx \
        --conf-path=/usr/local/nginx/conf/nginx.conf \
        --pid-path=/usr/local/nginx/logs/nginx.pid \
        --lock-path=/usr/local/nginx/run/nginx.lock \
        --error-log-path=/usr/local/nginx/logs/error.log \
        --http-log-path=/usr/local/nginx/logs/access.log \
        --with-http_stub_status_module \
        --with-http_ssl_module
RUN make && \ 
        make install

ENV PATH /usr/local/nginx/bin:$PATH
      
# 把本地已经改好的配置文件替换进去
#COPY nginx.conf  /usr/local/nginx/conf/nginx.conf 
    
# 映射端口
EXPOSE 80
    
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
    
#CMD 运行以下命令 
CMD ["nginx"]

生成镜像

# docker build -f nginxfile -t ngx_test:v1.1 .

 

创建容器

# docker run -tid -p80:80 --name nginx ngx_test:v1.1

访问一下,没有问题

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值