使用 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 服务器配置
        }
    }
相关推荐
程序员老赵17 小时前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua11121 小时前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽2 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康4 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn867 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
2601_961875247 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj7 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
程序员老赵7 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏7 天前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主7 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器