docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker启动Nginx

docker启动Nginx的两种方式小结

作者:麻辣翅尖

本文介绍了两种获取Nginx镜像的方式:直接从DockerHub拉取和通过Dockerfile构建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Nginx镜像的获取

二者区别

主要区别在于定制化程度和构建过程的控制:

直接拉取Nginx镜像:

通过Dockerfile构建Nginx镜像:

总结,直接拉取Nginx镜像适合快速部署和标准使用场景,而通过Dockerfile构建Nginx镜像适合需要特定配置、模块或自动化部署流程的场景。选择哪种方式取决于项目的具体需求和开发流程。

Nginx关键目录

配置目录 (/etc/nginx/): 存放Nginx的主配置文件nginx.conf以及其他配置文件。这个目录通常包括:

直接从Docker Hub拉取Nginx镜像

拉取最新的Nginx官方镜像:

docker pull nginx

如果你想要拉取特定版本的Nginx镜像,可以通过指定标签来完成。例如,要拉取Nginx 1.19版本的镜像,可以使用:

docker pull nginx:1.19

查看已下载的镜像

docker images

配置Nginx
通常所有配置都应该通过Docker卷(volumes)或绑定挂载(bind mounts)来管理,以便于配置的持久化和更新。
所以先在宿主机上创建配置文件 ,再将其挂载到nginx

/home/nginx/nginx.conf

worker_processes        1;  # 工作进程数量,通常设置为CPU核心数

events {
        worker_connections      1024; # 每个工作进程的最大连接数
}

http {
        include         /etc/nginx/mime.types;  # 包含MIME类型定义
        default_type    application/octet-stream;  # 默认文件类型

        sendfile        on; # 启用高效文件传输模式

        keepalive_timeout       65; # 保持连接的超时时间

        server {
                listen  80; # 监听的端口
                server_name     localhost;
				# 处理以/开头的请求
                location / {
                        root    /usr/share/nginx/html;   # 定义网站静态资源根目录
            			index  index.html index.htm; 	# 默认文件(从root目录下找)
                }
                # 处理以/api/开头的请求,并将它们转发到后端服务器
               	location /api/ {
			            # 指令用于修改或添加传递给后端服务器的请求头。
			            proxy_set_header Host $http_host; # 请求头中的Host字段的值
			            proxy_set_header X-Real-IP $remote_addr; # 发起请求的客户端的IP地址
			            proxy_set_header REMOTE-HOST $remote_addr;
			            # 在代理请求时构建X-Forwarded-For头(用于追踪请求的原始IP地址,可包含多个)
			            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
			            proxy_pass 代理转发请求的目标地址;  # 后端地址
		        }

                error_page      500 502 503 504 /50x.html; # 错误页面
                location = /50x.html {
                        root    /usr/share/nginx/html; # 错误页面的根目录 
                }

        }
}

/home/nginx/html/index.html

	<html lang="en">
        <head>
        	<meta charset="UTF-8" />
            <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <title>my nginx test</title>
        </head>
        <body>
             <div>hello nginx html</div>
             <h1>edit html</h1>
        </body>
	</html>

启动Nginx

docker run --name my-nginx-test3  -p 80:80 
        -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf     
        -v /home/nginx/html:/usr/share/nginx/html  
        -d nginx

启动容器:docker run
–name: 为容器指定一个唯一的名称,可以通过名称来引用容器,而不是使用容器的ID
-p:映射端口,[宿主机端口(访问端口)]:[nginx容器内listen的端口]-v :绑定挂载配置 [宿主机路径]:[容器内路径]-d:后台运行,返回运行成功的镜像id

查看运行的容器

docker ps

在这里插入图片描述

运行后修改配置文件重启生效

重载Nginx配置:

docker exec <容器name> nginx -s reload
docker restart nginx

浏览器输入ip:端口

在这里插入图片描述

通过Dockerfile构建Nginx镜像后拉取

注意执行上下文路径

创建Dockerfile:创建一个Dockerfile来构建您的Nginx镜像。

# 使用Nginx官方镜像作为基础镜像
FROM nginx:alpine

# 将dist目录(包含index.html和其他静态文件)复制到Nginx容器的静态文件目录
# ./dist相对执行构建上下文的路径
COPY ./dist/ /usr/share/nginx/html/

# 将自定义的Nginx配置文件复制到Nginx容器(此步骤将修改nginx完整的主配置文件)
COPY nginx/nginx.conf /etc/nginx/nginx.conf
	<html lang="en">
        <head>
        	<meta charset="UTF-8" />
            <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <title>dockerfile nginx test</title>
        </head>
        <body>
             <div>hello use dockerfile nginx html</div>
        </body>
	</html>

构建和运行Docker容器:使用Dockerfile和Nginx配置文件构建Docker镜像,并运行容器。

构建Docker镜像

docker build -t my-dockerfile-nginx -f Dockerfile .

-t: 选项用于指定镜像的名称和标签
. :最后的点号表示当前目录是构建上下文
-f:指定dockerfile所在位置,若在当前执行目录可不用指定

运行Docker容器,开放9999端口访问

docker run --name dockerfile-nginx -p 9999:80 -d my-dockerfile-nginx

浏览器输入ip:端口

在这里插入图片描述

到此这篇关于docker启动Nginx的两种方式小结的文章就介绍到这了,更多相关docker启动Nginx内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文