百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

使用Debian、Docker和Nginx部署Web应用教程

cac55 2024-10-17 07:56 26 浏览 0 评论

在 Debian 系统上使用 Docker 和 Nginx 部署 Web 应用是一种高效的解决方案,结合 Docker 的轻量级容器化功能与 Nginx 的强大反向代理与负载均衡能力,能够轻松实现 Web 应用的高效部署。下面我们将详细讲解每一步的部署过程,并对每个命令进行解释。

1. 安装 Docker

首先,在 Debian 上安装 Docker。Docker 是一种应用容器引擎,能够将应用及其依赖打包在容器中,实现跨平台的一致运行环境。

步骤

  1. 更新系统包列表,确保获取最新的软件包信息:
apt-get update
  1. 安装必需的包,以便让 APT 能够通过 HTTPS 获取仓库:
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
  1. 添加 Docker 的官方 GPG 密钥,以便验证 Docker 包的合法性:
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 将 Docker 的 APT 软件源添加到系统的源列表中:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新包列表,并安装 Docker:
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io

通过上述步骤,您已经成功在 Debian 上安装了 Docker。Docker 使得部署应用变得更加轻量和高效。

2. 安装 Nginx

Nginx 是一款高效的 HTTP 和反向代理服务器,常用于负载均衡和静态内容的处理。使用 Docker 构建的 Web 应用通常会通过 Nginx 进行代理和负载均衡。

步骤

  1. 运行以下命令以安装 Nginx:
apt-get install -y nginx

此命令会从 Debian 的 APT 源中下载并安装 Nginx,同时会自动启动 Nginx 服务。您可以通过浏览器访问服务器的 IP 地址,确认 Nginx 是否已正确安装并运行。

3. 编写 Dockerfile

接下来,我们需要在 Web 应用根目录下创建 Dockerfile。该文件是用来定义如何将应用程序构建为一个 Docker 镜像。

示例 Dockerfile

FROM nginx:latest
COPY . /usr/share/nginx/html

解释

  • FROM nginx:latest:此命令表示构建镜像时将基于最新版本的 Nginx 官方镜像。
  • COPY . /usr/share/nginx/html:将当前目录下的 Web 应用文件复制到 Nginx 的默认 Web 目录 /usr/share/nginx/html。这意味着,当 Docker 容器启动时,Nginx 将自动托管该 Web 应用。

4. 构建和运行 Docker 容器

在 Web 应用的根目录下,运行以下命令来构建并运行 Docker 容器:

  1. 构建 Docker 镜像:
docker build -t mywebapp .

解释:docker build 命令会根据 Dockerfile 的内容创建一个名为 mywebapp 的镜像。镜像是应用的打包版本,包含了所有应用所需的依赖和文件。

  1. 运行 Docker 容器:
docker run -d -p 80:80 mywebapp

解释

  • -d:在后台运行容器(即以守护进程模式运行)。
  • -p 80:80:将主机的 80 端口映射到容器的 80 端口。这样,主机的 80 端口的请求会转发到容器中的 Nginx 上。
  • mywebapp:表示要运行的镜像名称。

通过这两步操作,Web 应用已经通过 Docker 运行在 Nginx 中,并且可以通过服务器的 IP 地址直接访问。

5. 配置 Nginx 反向代理

Nginx 可以配置为反向代理,将来自客户端的请求转发到运行在 Docker 容器中的 Web 应用。我们需要修改 Nginx 配置文件来实现这一点。

步骤

  1. 打开 Nginx 配置文件:
nano /etc/nginx/nginx.conf
  1. 在 http 块中添加如下 server 配置:
server {
    listen 80;
    server_name your_domain;

    location / {
        proxy_pass http://localhost:80;  # 将请求代理到Docker容器
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

解释

  • listen 80:指示 Nginx 监听 80 端口。
  • server_name your_domain:将 your_domain 替换为实际的域名或服务器 IP 地址。
  • proxy_pass http://localhost:80:Nginx 会将所有请求代理到本地的 80 端口,也就是 Docker 容器中运行的 Nginx 实例。
  • proxy_set_header:这些指令用于将客户端的真实 IP 地址、主机名等信息传递给后端应用。

6. 重新加载 Nginx 配置

每次修改 Nginx 配置后,都需要重新加载 Nginx 服务以应用更改。

步骤

  1. 运行以下命令以重新加载 Nginx:
systemctl reload nginx

此命令会使得 Nginx 重新读取配置文件,而无需中断正在进行的连接。

总结

以上是使用 Docker 和 Nginx 在 Debian 系统上部署 Web 应用的详细步骤。通过 Docker 的容器化技术和 Nginx 的反向代理功能,可以轻松实现 Web 应用的部署与负载均衡。

表:各步骤原理与作用

步骤

作用

原理解释

安装 Docker

为系统引入容器化技术,用于轻量级应用部署和管理

Docker 提供了一个隔离的运行环境,使得应用与依赖可以独立于系统运行

安装 Nginx

用于处理 HTTP 请求,提供反向代理、负载均衡等服务

Nginx 是一款高性能的 HTTP 服务器,常用于处理静态文件和反向代理

编写 Dockerfile

定义如何将 Web 应用打包成 Docker 镜像,以便容器化部署

Dockerfile 是 Docker 镜像的构建脚本,指定基础镜像和应用文件

构建 Docker 镜像

将 Web 应用及其依赖打包为 Docker 镜像,便于移植和运行

docker build 命令基于 Dockerfile 构建镜像

运行 Docker 容器

启动容器,将应用运行在隔离的环境中,并通过端口映射实现外部访问

容器是基于镜像创建的轻量虚拟机,独立运行且与系统资源隔离

配置 Nginx

配置反向代理功能,将请求转发到 Docker 容器中的应用

反向代理用于将客户端请求转发给后端服务器,并保持应用服务的安全性

重新加载 Nginx 配置

应用 Nginx 配置更改,无需中断现有连接

systemctl reload 命令会平滑地重新加载配置文件

通过这些步骤,您可以在 Debian 上使用 Docker 和 Nginx 部署高效且稳定的 Web 应用。

相关推荐

如何屏蔽色情网站?_怎么能屏蔽网站

一、基础防御:全网DNS劫持阻断1.修改全网DNS服务器推荐DNS:安全DNS:CleanBrowsing(成人内容过滤):185.228.168.168/185.228.169.168Open...

容器、Pod、虚拟机与宿主机网络通信全解:看这一篇就够了

在日常开发与部署过程中,很多人一开始都会有这样的疑惑:容器之间是怎么通信的?容器怎么访问宿主机?宿主机又如何访问容器?Kubernetes中Pod的网络和Docker容器一样吗?容器跨机器是...

Win11专业版找不到共享打印机的问题

有很多深度官网的用户,都是在办公室上班的。而上班就需要使用打印机,但更新win11系统后,却出现同一个办公室里面的打印机都找不到的问题,这该如何处理呢?其实,可能是由于我们并没有打开共享打印机而造成的...

常用电脑快捷键大全,摆脱鼠标依赖,建议收藏

Ctrl+C复制Ctrl+X剪切Ctrl+V粘贴Ctrl+Z撤销Ctrl+Y重做Ctrl+B加粗Ctrl+A全选所有文件Ctrl+S保存Ctrl+N新建Ctrl+O打开Ctrl+E...

Win11实现自动追剧Jellyfin硬解,免NAS复杂操作

大家好,欢迎来到思赞数码。本期将详细介绍如何通过安装和配置Sonarr、Radarr、Prowlarr、qBittorrent和Jellyfin,打造一套自动化的影视管理系统。很多人认为,要实现自动追...

微软Win11安卓子系统WSA 2308.40000.3.0更新推送下载

IT之家9月21日消息,微软官方博客今日宣布,已面向所有WindowsInsider用户推送了Windows11安卓子系统的2308.40000.3.0版本更新。本次更新和之前...

路由器总掉线 一个命令就能猜出八九分

明明网络强度满格或有线图标正常,但视频卡成PPT、网页刷不开、游戏动不了,闲心这些问题很多小伙伴都碰到过。每次都要开关路由、宽带/光猫、插拔网线……一通忙。有没有啥办法能快速确定故障到底在哪儿,方便处...

windows电脑如何修改hosts文件?_windows怎么修改hosts

先来简单说下电脑host的作用hosts文件的作用:hosts文件是一个用于储存计算机网络中各节点信息的计算机文件;作用是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中...

win10广告弹窗ShellExperienceHost.exe

win10右下角老是弹出广告弹窗,排查为以下程序引起,但是这个是系统菜单的程序不能动:C:\Windows\SystemApps\ShellExperienceHost_cw5n1h2txyewy\S...

Win10 Mobile预览版10512/10166越狱解锁部署已被黑客攻破

看起来统一的WindowsPhone和Windows越加吸引人们的关注,特别是黑客们的好奇心。XDA论坛宣称,在Win10Mobile预览版10512/10166上,已取得越狱/解锁部署突破,比如可...

6款冷门小众软件,都是宝藏,建议收藏

真的很不错(。-ω-)zzzBearhttps://bear.app/cn/Bear是一个漂亮,灵活的Markdown的写作工具。它一样只支持苹果家的全平台。它一出现就惊艳四方,就被AppSto...

如何让不符合条件的设备升级Windows 11

如果你是最近(6月24日之后)加入WindowsInsider项目并且你的设备并不符合升级条件,那么当你在尝试升级Windows11的时候可能会看到以下错误:你的PC不符合Wi...

windows host文件怎么恢复?局域网访问全靠这些!

windowshost文件怎么恢复?windowshost文件是常用网址域名及其相应IP地址建立一个关联文件,通过这个host文件配置域名和IP的映射关系,以提高域名解析的速度,方便局域网用户使用...

Mac Hosts管理工具---SwitchHosts

switchhosts!formac是一款帮助用户快速切换hosts文件的工具,switchhosts!formac能够帮助你快速方便的打造个人专用的网络环境,支持本地和在线两种方式,并且支持...

「浅谈趣说网络知识」 第十二弹 老而不死的Hosts,它还很有用

【浅谈趣说网络知识】第十二弹老而不死的Hosts,它还很有用什么时候才觉得自己真的老了,不是35岁以上的数字,不是头上的点点白发,而是不知觉中的怀旧。风口上的IT界讲的就是"长江后浪推前浪...

取消回复欢迎 发表评论: