使用 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 服务器配置
        }
    }
相关推荐
java_logo9 小时前
Docker 部署 EmulatorJS:轻松搭建浏览器复古游戏平台
游戏·docker·容器·复古游戏·轩辕镜像·emulatorjs·红白机
吴声子夜歌10 小时前
Kubernetes权威指南——网络原理(一)
网络·容器·kubernetes
方便面不加香菜11 小时前
Docker Container --容器及容器的操作案例详解
运维·docker·容器
无人生还别怕17 小时前
如何搭建docker仓库(轻量级)registry
linux·运维·docker·云原生·容器·registry·openanolisos
YYYing.1 天前
【K8s系列 (一) 】Docker与容器(上篇)
docker·云原生·容器·kubernetes
csdn_aspnet1 天前
使用 Docker 和 RedisInsight 设置 Redis 以进行本地开发
redis·docker·容器·redisinsight
余槐i2 天前
MySQL 8.0 联合索引走错:为什么加了索引查询反而从 200ms 变成 8s
java·spring boot·mysql·docker·性能优化
csdn_aspnet2 天前
如何在本地 Docker 容器中运行 Redis,并使用 Redis Insight 和 Redis CLI 进行管理
redis·docker·容器
且从容.2 天前
Ubuntu 安装 Docker
linux·ubuntu·docker
todoitbo2 天前
我在 Mac 上用 Docker 部署 Nexent:从拉取镜像到接入模型
macos·docker·大模型·ai智能体·nexent·快速入门与环境准备