生产服务器上的Vue

问题描述

我发现自己处在一种微不足道的情况下,但是花了几个小时却并没有真正到达目的地。

长话短说,我的目标是在digitalocean上托管一个vue应用。

首先,我想生成一个通过用户界面完成的vue应用。

然后我想创建一个Dockerfile对其进行容器化。

我想使用docker compose进行部署,因此最好使用设置vue应用和Nginx的docker-compose.yaml文件

最后,我想使用certbot保护网站的安全。

我已经完成了每个步骤,但不是所有步骤都一次完成。 Nginx配置也已经在服务器上手动创建,但是我希望是否可以通过docker完成,以便将来我可以将该项目用作部署模板。我不介意也有节点并表示设置,但这不是严格要求的。

我希望最好的解决方案是不依赖于我编写的代码的指南,因为这是一个非常普通的问题,但是如果有帮助,我会添加一些代码

这是我的Dockerfile:

# build stage
FROM node:lts-alpine as build-stage
workdir /app
copY package*.json ./
RUN npm install
copY . .
RUN npm run build

# production stage
FROM Nginx:stable-alpine as production-stage
copY --from=build-stage /app/dist /usr/share/Nginx/html
EXPOSE 80
CMD ["Nginx","-g","daemon off;"]

我认为问题是该应用程序与Nginx一起作为dockerfile的一部分提供,但是我在docker-compose中也使用certbot设置了一个Nginx容器。我不知道如何获取docker-compose Nginx设置来提供此应用。

docker-compose文件

version: '3'

services:
  application:
    restart: unless-stopped
    image: laukess/mymediatracker:expose_3000
    ports:
      - 3000:3000
  Nginx:
    image: Nginx:1.15-alpine
    restart: unless-stopped
    volumes:
      - ./data/Nginx:/etc/Nginx/conf.d
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    ports:
      - "80:80"
      - "443:443"
    command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; Nginx -s reload; done & Nginx -g \"daemon off;\"'"
  certbot:
    image: certbot/certbot
    restart: unless-stopped
    volumes:
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"


server {
    listen 80;
    server_name fast-track.io;
    server_tokens off;

    location /.well-kNown/acme-challenge/ {
        root /var/www/certbot;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name my-site.com;
    server_tokens off;

    ssl_certificate /etc/letsencrypt/live/my-site.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-site.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-Nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass  https://my-site.com;
        proxy_set_header    Host                $http_host;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto   https;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)