使用 Dockerfile 制作一个 nginx 静态web资源服务器的镜像

使用 Dockerfile 制作一个 nginx 静态web资源服务器的镜像

制作 Nginx Dockerfile 镜像

  • 首先保证基础镜像 centos
  • 然后升级 centos 镜像中的 yum
  • 安装 vim 工具,可以编辑文件
  • 安装 ncurses,可以使用一些实用的命令比如 clear清屏
  • 安装nginx, 使用 CMD "nginx", "-g", "daemon off;" 保证运行容器时启动 nginx
Dockerfile 复制代码
# Version: 0.0.1
FROM centos:latest

MAINTAINER admin 
#ADD test.js /opt/preject/test.js
## k1 RUN 命令会在 shell 里使用命令包装器 /bin/sh -c 执行
RUN cd /etc/yum.repos.d/
RUN  sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN  sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN  yum update -y
## k2 exec 格式RUN 命令(避免shell字符串篡改)
RUN ["yum","install","-y","vim"]
RUN ["yum","install","-y","ncurses"]
RUN ["yum","install","-y","nginx"]
RUN echo 'Hi, I am in your container' \
    > /usr/share/nginx/html/index.html

# ENV BIN_PATH="/usr/sbin" 
# WORKDIR $BIN_PATH
# ENV REFRESHED_AT 2023-11-24
CMD ["nginx", "-g", "daemon off;"]

EXPOSE 80

构建镜像

bash 复制代码
docker build -t="static_web" .
# 如果每次构建需要清除缓存 使用 --no-cache
docker build --no-cache -t="static_web" .

启动容器

启动静态网站nginx服务,对外暴露8081端口

bash 复制代码
docker run -itd -p 8081:80 --name="static_web_1" static_web

访问 nginx 服务

常用的 Nginx 命令和示例:

Nginx 命令:

  1. 启动 Nginx:

    bash 复制代码
    sudo service nginx start
  2. 停止 Nginx:

    bash 复制代码
    sudo service nginx stop
  3. 重启 Nginx:

    bash 复制代码
    sudo service nginx restart
  4. 重新加载配置:

    bash 复制代码
    sudo service nginx reload
  5. 查看 Nginx 版本:

    bash 复制代码
    nginx -v
  6. 检查配置文件语法:

    bash 复制代码
    nginx -t

Nginx 配置文件示例:

Nginx 的主要配置文件是 /etc/nginx/nginx.conf,而其他配置文件通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/。下面是一些常见的配置示例:

  1. 基本的静态文件服务:

    nginx 复制代码
    server {
        listen 80;
        server_name example.com;
    
        location / {
            root /path/to/your/files;
            index index.html;
        }
    }
  2. 反向代理:

    nginx 复制代码
    server {
        listen 80;
        server_name example.com;
    
        location / {
            proxy_pass http://backend_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
  3. 负载均衡:

    nginx 复制代码
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }
    
    server {
        listen 80;
        server_name example.com;
    
        location / {
            proxy_pass http://backend;
            # 其他代理相关配置
        }
    }
  4. HTTPS 配置:

    nginx 复制代码
    server {
        listen 80;
        server_name example.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name example.com;
    
        ssl_certificate /path/to/certificate.crt;
        ssl_certificate_key /path/to/private_key.key;
    
        # 其他 SSL 配置
        
        location / {
            # HTTPS 服务器配置
        }
    }
相关推荐
JavaPub-rodert5 小时前
Docker 日志为什么能把磁盘写爆?讲透 json-file、local、journald、日志轮转与 docker logs
docker·eureka·json
人生匆匆6 小时前
docker部署ceph集群
ceph·docker·容器
张张123y9 小时前
后端第九课:部署上线(把你的 FastAPI 后端真正跑起来给别人用)
python·docker·部署·fastapi
AscendKing13 小时前
Docker Compose 一键部署 SkyWalking 10.2.0 + Elasticsearch8.11,分布式链路追踪完整实战
elasticsearch·docker·skywalking·链路追踪·微服务监控
励志师code13 小时前
Kubernetes 集群节点生命周期管理实战:从扩容、调度管控到证书续期
运维·docker·容器·kubernetes·gpu算力·kubelet
闲云自留地14 小时前
Kubernetes 安装保姆级:关 swap、装 containerd、init 集群、calico 一篇通
容器·贪心算法·kubernetes
木雷坞14 小时前
Docker Compose部署Metabase:应用库隔离与日期筛选看板
运维·docker·容器
怒放的生命199114 小时前
前端项目 Docker 打包实操指南
前端·docker·容器
tedcloud12314 小时前
Docker Compose 部署 Immich:手机照片自动备份与常见故障排查
运维·前端·docker·容器·智能手机·开源·流程图
古城小栈14 小时前
Docker Compose 云原生的底座
docker·云原生·容器