使用 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 命令:
-
启动 Nginx:
bashsudo service nginx start
-
停止 Nginx:
bashsudo service nginx stop
-
重启 Nginx:
bashsudo service nginx restart
-
重新加载配置:
bashsudo service nginx reload
-
查看 Nginx 版本:
bashnginx -v
-
检查配置文件语法:
bashnginx -t
Nginx 配置文件示例:
Nginx 的主要配置文件是 /etc/nginx/nginx.conf
,而其他配置文件通常位于 /etc/nginx/conf.d/
或 /etc/nginx/sites-available/
。下面是一些常见的配置示例:
-
基本的静态文件服务:
nginxserver { listen 80; server_name example.com; location / { root /path/to/your/files; index index.html; } }
-
反向代理:
nginxserver { 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; } }
-
负载均衡:
nginxupstream backend { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; # 其他代理相关配置 } }
-
HTTPS 配置:
nginxserver { 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 服务器配置 } }