linux docker如何同时部署nginx和nuxt,80和443端口指向nuxt的3000端口

先看效果  

首页 - 嗨撩聊天回复话术 (liaotianhuifu.com)

背景:博主是个小白,想访问域名的时候,指向nuxt项目

问题:http默认端口是80,https默认端口是443,而nuxt项目默认端口是3000

方案一:docker分别部署nginx和nuxt,然后利用nginx代理转发到nuxt

 server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
        location / {
           # 第一种,利用内网127.0.0.1访问
             proxy_pass http://127.0.0.1:3000;
           # 第二种,利用外网网1ip访问 但是此种会绕到服务商,会收流量费
             proxy_pass http://xx.xx.xx.xx:3000;
        }
    }

方案二:docker同时部署nginx和nuxt,

1、yml文件

version: "3"
 
services:
  nginx2:
    image: nginx
    restart: always
    container_name: nginx2
    hostname: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - /data/nginx/conf:/etc/nginx
      - /data/nginx/logs:/var/log/nginx
      - /data/nginx/html:/usr/share/nginx/html
  service_nuxt2:
    image: nuxt:v1 
    container_name: nuxtapp2
    # 构建自定义命令
    build:
      context: ./  #指定dockerfile文件的所在路径
    ports:
      - "3000:3000"
    environment:
      TZ: Asia/Shanghai

2、dockerfile文件

FROM node-pm2:v14.15.0 

RUN mkdir -p /app

WORKDIR /app

ADD ./.output/ /app/

EXPOSE 9000

CMD ["pm2 start --no-daemon"]

ENTRYPOINT ["/bin/bash","-c"]

3、nginx配置

server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
        location / {
           # 映射到nuxt3项目
            proxy_pass http://service_nuxt2:3000; # 内网地址
           # return 403;
        }
    }
    
    server {
        #SSL 访问端口号为 443
        listen 443 ssl; 
        #填写绑定证书的域名
        server_name www.liaotianhuifu.com; 
        #证书文件名称
        ssl_certificate scs1683375126842_www.liaotianhuifu.com_server.crt; 
        #私钥文件名称
        ssl_certificate_key scs1683375126842_www.liaotianhuifu.com_server.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        location / {
           #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
           #例如,您的网站运行目录在/etc/www下,则填写/etc/www。 容器内的路径
           proxy_pass http://service_nuxt2:3000; # 内网地址
        }
}

此处遇到了两个坑,第一,docker 镜像重启命令

docker-compose -f nuxt3_and_nginx.yml up -d --build

由于之前没有加build,导致一直没有生效

docker使用node-pm2部署nuxt

1、执行docker load -i node-pm2.tar这个后,会在本机加载一个镜像,这个镜像是dockerfile的基础镜像

docker load -i node-pm2.tar

# 重命名
docker tag 10.5.11.11:5000/library/node-pm2:v14.15.0 node-pm2:v14.15.0

# 删除镜像
docker image rm 10.5.11.11:5000/library/node-pm2

2、然后执行docker build -t nuxt:v1 -f Dockerfile ./,会产生一个新镜像

docker build -t nuxt:v1 -f Dockerfile ./

3、docker-compose运行dockfile

docker-compose -f xx.yml up -d --build


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值