Linux Alpine安装 Nginx

本文详细介绍了如何在Linux Alpine系统中使用Dockerfile安装和配置Nginx。涵盖EXPOSE、VOLUME、ENV、ADD、COPY、ENTRYPOINT以及ONBUILD指令的用法,指导读者构建和运行Nginx容器。

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

EXPOSE

EXPOSE用于告诉Docker服务器容器暴露的端口号,供互联系统使用。

在启动容器时通过-P,Docker主机会自动分配一个端口转发到指定的端口;
使用-p则可以具体指定哪个本地端口映射过来

格式为EXPOSE  <port> [<port>...]
//暴露端口号	
EXPOSE 80
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE        COMMAND     CREATED          STATUS          PORTS     NAMES
f70fa47da42a   nginx:v0.1   "/bin/sh"   42 seconds ago   Up 40 seconds   80/tcp    web1
VOLUME

格式为VOLUME ["/data"]。
创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等

[root@localhost ~]# vim nginx/Dockerfile 

FROM alpine
# 维护者信息
LABEL MAINTAINER="yt 3091530433<@qq.com>"

#ONBUILD COPY soft/nginx-1.18.0.tar.gz /usr/src
#ONBUILD RUN cd /usr/src

VOLUME ["/data"]
RUN echo 'hello' > /data/abcd
CMD ["/bin/sh"]

//映射
[root@localhost ~]# docker run -it --rm --name web1 -v $(pwd):/data nginx:v0.11 /bin/sh
/ # ls
bin    etc    media  proc   sbin   tmp    var
data   home   mnt    root   srv    top
dev    lib    opt    run    sys    usr
/ # cd /data/
/data # ls nginx/
Dockerfile  soft


ENV

指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持

//格式为ENV<key> <value>。
ENV version 1.18.0
ENV PATH /usr/local/nginx/sbin:$PATH  //环境变量

RUN apk add wget && \
    wget -O nginx-$version.tar.gz http://nginx.org/download/nginx-$version.tar.gz && \
ADD

该命令将复制指定的到容器中的。其中可以是Dockerfile所在目录的一个相对路径(文件或目录);也可以是一个URL;还可以是一个tar文件(会自动解压为目录)

//格式为ADD <src> <dest>
ADD a/nginx-1.19.6.tar.gz /top  //自动解压
ADD  a/nginx-1.19.6.tar.gz /tom/abcd //自动解压

COPY

复制本地主机的(为Dockerfile所在目录的相对路径,文件或目录)为容器中的。目标路径不存在时会自动创建。
当使用本地目录为源目录时,推荐使用COPY

//格式为COPY <src> <dest>
COPY  a/nginx-1.19.6.tar.gz /tom/abcde/
ENTRYPOINT

配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖。而且,如果在docker run的后面提供了参数,这些命令行参数会被当作参数传递给ENTRYPOINT指定的程序。

每个Dockerfile中只能有一个ENTRYPOINT,当指定多个ENTRYPOINT时,只有最后一个生效
ENTRYPOINT有两种格式:

ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param1 param2(在shell中执行)

ONBUILD

格式为ONBUILD [INSTRUCTION]。

配置当所创建的镜像作为其他镜像的基础镜像时,所执行的操作指

ONBUILD COPY soft/nginx-1.18.0.tar.gz /usr/src
ONBUILD RUN cd /usr/src  && tar xf nginx-1.18.0.tar.gz

Linux Alpine安装 Nginx

[root@localhost ~]# vi nginx/Dockerfile 
# 指定基于的基础镜像
FROM alpine

# 维护者信息
LABEL MAINTAINER="yt 3091530433<@qq.com>"
# 镜像操作指令
ADD soft/nginx-1.18.0.tar.gz /home/
ADD soft/pcre-8.44.tar.gz /home/

RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
    echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
RUN apk update && apk upgrade && \
    apk add  gcc g++ make && \
    addgroup -S nginx && \
    adduser -DHS -s /sbin/nologin -G nginx nginx && \
    cd /home/nginx-1.18.0 && \
    ./configure --prefix=/usr/local/nginx --with-pcre=/home/pcre-8.44 --without-http_gzip_module && \
    make && make install && \
    ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ && \
    mkdir -p /usr/local/nginx/conf/vhost/

#容器启动时默认要执行的指令
CMD ["-g", "bin/sh","daemon off;"]

//执行
[root@localhost ~]# docker  build -t nginx:v1.34 nginx

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
nginx        v1.30     c6984ccdf4f5   About a minute ago   197MB
<none>       <none>    538284751b02   7 minutes ago        197MB
alpine       latest    389fef711851   3 weeks ago          5.58MB

[root@localhost ~]# docker run -it --rm --name web1 nginx:v0.34 /bin/sh
/ # nginx 
/ # cd usr/local/
bin/    lib/    nginx/  share/
/ # cd usr/local/nginx/
client_body_temp/  html/              sbin/
conf/              logs/              scgi_temp/
fastcgi_temp/      proxy_temp/        uwsgi_temp/
/ # cd usr/local/nginx/html/
/usr/local/nginx/html # ls
50x.html    index.html
/usr/local/nginx/html # cd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值