使用 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 服务器配置
        }
    }
相关推荐
Andy杨1 分钟前
20250712-1-Kubernetes 监控与日志管理-K8s日志管理与维护_笔记
笔记·容器·kubernetes
潘晓可2 小时前
Docker部署Nginx代理多个服务:公网域名与内网IP场景全解
nginx·docker·nginx proxy
KKKingWei3 小时前
Kubernetes Dashboard UI 部署安装
云原生·容器·kubernetes
素雪风华4 小时前
Jenkins+Gitee+Docker容器化部署
java·docker·gitee·jenkins·springboot·持续部署
蓝天居士5 小时前
docker常用命令集(2)
docker·容器
panamera125 小时前
云端docker小知识
运维·docker·容器
木卯彳亍13 小时前
番外-linux系统运行.net framework 4.0的项目
linux·docker·.net
退役小学生呀16 小时前
十一、K8s细粒度权限管理RBAC
linux·docker·云原生·容器·kubernetes·k8s
昭阳~17 小时前
Kubernetes 高级调度特性
云原生·容器·kubernetes