使用 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 服务器配置
        }
    }
相关推荐
天草二十六_简村人5 小时前
docker安装index-tts,实现文本转语音的本地私有化部署
运维·docker·ai·容器·ai编程
百***86465 小时前
springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice
spring boot·后端·docker
观望过往5 小时前
Docker 全面技术指南:从基础概念到企业级应用实践
运维·docker·容器
java_logo7 小时前
MONGO-EXPRESS Docker 容器化部署指南
linux·运维·mongodb·docker·容器·express
IT瑞先生8 小时前
Docker容器使用手册——进阶篇(下)
运维·docker·容器
_abcdef8 小时前
Kubernetes K8s
云原生·容器·kubernetes
java_logo8 小时前
Kubernetes Dashboard Docker 容器化部署指南
运维·mysql·docker·云原生·容器·kubernetes·php
编织幻境的妖9 小时前
Docker底层工作原理
运维·docker·容器
gcfer9 小时前
Docker 介绍和常用命令
运维·docker·容器
j***630810 小时前
使用Kubernetes部署Spring Boot项目
spring boot·容器·kubernetes