基于 Alpine 构建轻量 Nginx 错误页面 Docker 镜像

1、创建目录

root@localhost \~\]# mkdir demo4 \[root@localhost \~\]# cd demo4 2、编写Dockerfile \[root@localhost demo4\]# vim .dockerignore \[root@localhost demo4\]# cat .dockerignore Dockerfile \[root@localhost demo4\]# vim Dockerfile \[root@localhost demo4\]# cat Dockerfile FROM alpine:3.23 AS builder RUN apk add --no-cache \\ build-base \\ pcre-dev \\ zlib-dev \\ openssl-dev \\ linux-headers \\ wget \\ tar ENV NGINX_VERSION=1.28.1 RUN wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \&\& \\ tar -xzf nginx-${NGINX_VERSION}.tar.gz \&\& \\ rm nginx-${NGINX_VERSION}.tar.gz WORKDIR /nginx-${NGINX_VERSION} RUN ./configure \\ --prefix=/usr/local/nginx \\ --with-http_ssl_module \\ --with-http_realip_module \\ --with-http_stub_status_module \\ --with-threads \\ --with-file-aio \&\& \\ make \&\& \\ make install FROM alpine:3.23 COPY --from=builder /usr/local/nginx /usr/local/nginx COPY error.html /usr/local/nginx/html/error.html RUN apk add --no-cache pcre zlib openssl \&\& \\ ln -sf /dev/stdout /usr/local/nginx/logs/access.log \&\& \\ ln -sf /dev/stderr /usr/local/nginx/logs/error.log RUN echo "index.html" \> /usr/local/nginx/html/index.html RUN echo 'server { error_page 404 /error.html; location = /error.html {root /usr/local/nginx/html; } }' \> /usr/local/nginx/conf/default.conf EXPOSE 80 443 ENTRYPOINT \["/usr/local/nginx/sbin/nginx","-g","daemon off;"

3、编写error.html

root@localhost demo4\]# vim error.html \[root@localhost demo4\]# cat error.html \ \ \ \ \ \自定义错误页面\ \ body { font-family: Arial,sans-serif; text-align: center; padding:50px; } h1{ color:#333; } p{ color:#666; } \ \ \ \哎呀!页面未找到\ \你所请求的页面可能已经被移除或者地址错误。\ \ \ 4、构建镜像 \[root@localhost demo4\]# docker build -t error:1.0 . \[+\] Building 4.9s (15/15) FINISHED =\> \[internal\] load build definition from Dockerfile =\> =\> transferring dockerfile: 1.25kB =\> \[internal\] load metadata for docker.io/library/alpine =\> \[internal\] load .dockerignore =\> =\> transferring context: 111B =\> \[internal\] load build context =\> =\> transferring context: 92B =\> \[builder 1/5\] FROM docker.io/library/alpine:3.23@sha2 =\> =\> resolve docker.io/library/alpine:3.23@sha256:25109 =\> CACHED \[builder 2/5\] RUN apk add --no-cache build =\> CACHED \[builder 3/5\] RUN wget http://nginx.org/downlo =\> CACHED \[builder 4/5\] WORKDIR /nginx-1.28.1 =\> CACHED \[builder 5/5\] RUN ./configure --prefix=/us =\> CACHED \[stage-1 2/6\] COPY --from=builder /usr/local/n =\> CACHED \[stage-1 3/6\] COPY error.html /usr/local/nginx =\> \[stage-1 4/6\] RUN apk add --no-cache pcre zlib openss =\> \[stage-1 5/6\] RUN echo "index.html" \> /usr/local/ngin =\> \[stage-1 6/6\] RUN echo 'server { error_page 404 /erro =\> exporting to image =\> =\> exporting layers =\> =\> exporting manifest sha256:20f960700b575ca07d0e9828 =\> =\> exporting config sha256:97012d6ba632c115ba828b4ff3 =\> =\> exporting attestation manifest sha256:df85dc33aa21 =\> =\> exporting manifest list sha256:b915f674184d47de561 =\> =\> naming to docker.io/library/error:1.0 =\> =\> unpacking to docker.io/library/error:1.0 5、查看镜像 \[root@localhost demo4\]# docker images i Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA busybox:latest b3255e7dfbcd 6.7MB 2.22MB elasticsearch:8.19.5 51945475f55d 2.1GB 710MB error:1.0 b915f674184d 21.5MB 6.59MB 6、创建容器 \[root@localhost demo4\]# docker run --name error --rm -d -p 8080:80 error:1.0 a6c0fee7f5b64c3e20a8989597923034004db9147c05932b004d7c2729150f90 7、访问测试 \[root@localhost demo4\]# curl localhost:8080/error.html \ \ \ \ \ \自定义错误页面\ \ body { font-family: Arial,sans-serif; text-align: center; padding:50px; } h1{ color:#333; } p{ color:#666; } \ \ \ \哎呀!页面未找到\ \你所请求的页面可能已经被移除或者地址错误。\ \ \ 8、访问日志 \[root@localhost demo4\]# docker logs error 172.17.0.1 - - \[20/Feb/2026:08:15:34 +0000\] "GET /error.html HTTP/1.1" 200 437 "-" "curl/7.76.1"

相关推荐
原来是猿17 小时前
Linux线程同步与互斥(四):日志系统与策略模式
linux·运维·开发语言·策略模式
立莹Sir18 小时前
商品中台架构设计与技术落地实践——基于Spring Cloud微服务体系的完整解决方案
分布式·后端·spring cloud·docker·容器·架构·kubernetes
九皇叔叔1 天前
Ubuntu 22.04 版本常用设置
linux·运维·ubuntu
杨云龙UP1 天前
ODA登录ODA Web管理界面时提示Password Expired的处理方法_20260423
linux·运维·服务器·数据库·oracle
songx_991 天前
Linux基础2
linux·运维·服务器
陈皮糖..1 天前
27 届运维实习笔记|第三、四周:从流程熟练到故障排查,企业运维实战深化
运维·笔记·sql·nginx·ci/cd·云计算·jenkins
莫白媛1 天前
Linux在限制敏感命令下的修改用户密码小白版
linux·运维·服务器
2601_949814691 天前
Docker部署Spring Boot + Vue项目
vue.js·spring boot·docker
hhb_6181 天前
C Shell 基础语法与高阶运维实战指南
运维·c语言·chrome
爱学习的小囧1 天前
VMware vCenter Server 9.0.2.0 资源详解+完整部署教程+下载指南+常见问题
运维·服务器·esxi·vmware·虚拟化·esxi9.0.2.0