docker搭建前后端分离项目通过Nginx部署https到外网服务器

Docker部署与Nginx配置详解
本文详细介绍了如何使用Docker和docker-compose进行项目部署,解决常见权限和网络问题,以及如何配置Nginx实现HTTP到HTTPS的转换,包括生成SSL证书和域名绑定的步骤。

一:项目准备:

1、安装docker和docker-compose(项目通过docker部署)

2、项目在内网能部署成功

3、编写好docker-compose文件,进行docker登录

二:实施

1、docker-compose create;docker-compose start  启动项目

2、权限问题:部署完成后,无法连接数据库是因为服务器的端口没有打开(默认3306端口),一次可以把需要用到的端口打开,(怎么打开,百度了解)。

3、端口打开后,可以使用工具Navicat for mysql连接数据库,将本地数据库的表复制到外网数据库中(也可以使用其他方法,比如copy数据库放到数据库目录下,不过,不建议);并且查看数据库账号的权限。

4、创建网络,docker network xxxxxx;进入docker容器,docker exec -it 容器名  bash; 查看容器的IP,docker inspect (容器名)。

5、部署到外网,需要域名,所以,

第一步要申请一个域名,跳转到阿里云服务器,找到域名...,选择解析(这些可以去百度,都是有的,不详细说)

域名服务器如何绑定:https://blog.youkuaiyun.com/rentian1/article/details/95593787

域名如何加入前缀:

<think>好的,用户想知道如何将前后端分离项目部署在局域网中,让其他用户可以访问。我需要根据提供的引用内容来整理回答,特别是引用[1]和引用[2]中的信息。 首先,引用[1]提到使用Docker创建了一个名为net-ry的局域网,子网和网关设置,这可能涉及到Docker网络的配置。然后,用户需要搭建前后端的环境,可能包括Docker容器化部署。 然后,引用[2]讨论了内网部署外网访问的问题,但用户的问题是关于局域网的,所以重点应该放在局域网内的配置,比如确保服务在局域网IP上监听,防火墙设置,以及可能的路由器配置。比如,前端可能需要配置API代理,后端需要绑定到0.0.0.0,允许其他设备访问。 接下来,步骤可能需要分为几个部分:搭建局域网环境、部署后端服务、部署前端服务、配置网络和测试访问。同时,要确保各服务的端口开放,比如后端API端口,前端使用的端口,可能需要使用Nginx反向代理或者直接在Docker中处理网络。 可能的问题点包括:后端服务是否监听正确IP,防火墙是否阻止了端口访问Docker网络配置是否正确。需要检查这些方面。例如,后端应用需要绑定到0.0.0.0而不是localhost,否则其他设备无法访问Docker容器需要连接到同一个网络,并且端口映射正确。 另,引用[1]中的docker network create命令可以用来创建一个专用的Docker网络,这样容器之间可以通过容器名通信,而不需要知道IP地址,这有助于前后端的连接。 对于前端部署,可能需要将构建后的静态文件放在Nginx中,并配置代理到后端API地址。例如,在Nginx配置中设置proxy_pass到后端容器的名称和端口,如http://backend:8080。 测试方面,用户可以在同一局域网的其他设备上使用服务器的内网IP和前端端口访问,比如http://192.168.1.100:80。 最后,常见问题可能涉及端口未开放或者服务绑定不正确,需要指导用户检查这些点。同时,引用[2]提到的内网穿透等可能不适用于此问题,但可以作为扩展知识提及,不过用户当前需求是局域网,所以主要围绕Docker和网络配置。</think>### 前后端分离项目局域网部署指南 #### 一、搭建局域网环境 1. **创建Docker专用网络**(推荐方式) 使用Docker创建独立局域网,确保容器间通信隔离且安全。 ```bash docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1 ``` 此命令创建名为`net-ry`的网络,子网为`172.68.0.0/16`,网关为`172.68.0.1`[^1]。 2. **确认局域网IP范围** 确保服务器和用户设备在同一局域网段(如`192.168.1.x`或`172.68.x.x`)。 --- #### 二、后端服务部署 1. **容器化部署示例** 以Spring Boot为例,构建Docker镜像并运行: ```dockerfile FROM openjdk:17 COPY target/app.jar /app.jar EXPOSE 8080 CMD ["java", "-jar", "/app.jar", "--server.address=0.0.0.0"] ``` ```bash docker build -t backend . docker run -d --network net-ry --name backend -p 8080:8080 backend ``` **关键点**:`--server.address=0.0.0.0`确保监听所有网络接口。 2. **验证后端服务** ```bash curl http://localhost:8080/api/health ``` 若需允许其他设备访问,需开放服务器防火墙端口(如`8080`)。 --- #### 三、前端服务部署 1. **静态资源托管** 使用Nginx容器托管编译后的前端文件: ```dockerfile FROM nginx:alpine COPY dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf ``` ```bash docker run -d --network net-ry --name frontend -p 80:80 frontend ``` 2. **Nginx反向代理配置** ```nginx server { listen 80; location / { root /usr/share/nginx/html; index index.html; } location /api { proxy_pass http://backend:8080; # 使用Docker容器名通信 } } ``` --- #### 四、访问配置 1. **用户访问方式** - 用户设备需在同一局域网 - 通过服务器内网IP访问前端页面,如`http://192.168.1.100:80` 2. **跨设备连通性检查** - 确认服务器防火墙开放端口: ```bash ufw allow 80/tcp && ufw allow 8080/tcp ``` - 测试设备到服务器的网络连通性: ```bash ping <服务器内网IP> ``` --- #### 五、常见问题排查 | 问题现象 | 解决方案 | |-------------------------|---------------------------------------| | 前端无法加载API数据 | 检查Nginx的`proxy_pass`是否指向正确后端地址 | | 用户设备无法访问服务 | 确认服务器IP绑定为`0.0.0.0`,非`127.0.0.1` | | Docker容器间通信失败 | 确保所有容器加入同一Docker网络`net-ry`[^1] | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值