背景
部署前后端分离项目,前端vue项目,后端springbot项目
镜像构建部署成功,APP里局域网可访问,非局域网无法访问
问题情况
局域网可访问 ,FN Connect 下无法访问
配置文件
docker-compose.yml
version: "3.4"
name: yudao-system
services:
server:
container_name: yudao-server
build:
context: ./yudao-server/
image: yudao-server
restart: unless-stopped
ports:
- "48080:48080"
environment:
SPRING_PROFILES_ACTIVE: local
JAVA_OPTS: ${JAVA_OPTS:--Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom}
admin:
container_name: yudao-admin
build:
context: ./yudao-ui-admin/
args:
NODE_ENV: ${NODE_ENV:-production}
PUBLIC_PATH: ${PUBLIC_PATH:-/}
VUE_APP_TITLE: ${VUE_APP_TITLE:-我的管理系统}
VUE_APP_BASE_API: ${VUE_APP_BASE_API:-/admin-api}
VUE_APP_APP_NAME: ${VUE_APP_APP_NAME:-/}
VUE_APP_TENANT_ENABLE: ${VUE_APP_TENANT_ENABLE:-false}
VUE_APP_CAPTCHA_ENABLE: ${VUE_APP_CAPTCHA_ENABLE:-false}
VUE_APP_DOC_ENABLE: ${VUE_APP_DOC_ENABLE:-false}
VUE_APP_BAIDU_CODE: ${VUE_APP_BAIDU_CODE:-fadc1bd5db1a1d6f581df60a1807f8ab}
image: yudao-admin
restart: unless-stopped
ports:
- "8090:80"
depends_on:
- server
volumes:
- ./yudao-ui-admin/nginx.conf:/etc/nginx/nginx.conf
- ./yudao-ui-admin/dist:/usr/share/nginx/html:ro # 确保静态文件正确挂载
volumes:
nginx-config: # 修正 volume 名称
# driver: local # 可选,默认就是 local
nginx DockerFile
FROM nginx:latest
# 切换到 root 用户进行文件操作
USER root
# 复制静态文件
COPY dist/ /usr/share/nginx/html/
RUN chown -R nginx:nginx /usr/share/nginx/html && \
chmod -R 755 /usr/share/nginx/html && \
chmod 644 /usr/share/nginx/html/*
# 切换回 nginx 用户运行
USER nginx
# 复制 nginx 配置
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
nginx.conf
# 全局配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Gzip 压缩
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
# 您的 server 配置(放在 http 块内)
server {
listen 80; # 容器内使用 80 端口
server_name localhost; ## 重要!!!修改成你的外网 IP/域名
location / { ## 前端项目
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /admin-api/ { ## 后端项目 - 管理后台
proxy_pass http://yudao-server:48080/admin-api/; ## 使用 Docker 服务名
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 可选:超时设置
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
}
}
效果图
局域网
正常登录进入首页

非局域网
无法登录 提示操作失败系统异常,且nginx的docker无日志
