问题描述
我发现自己处在一种微不足道的情况下,但是花了几个小时却并没有真正到达目的地。
长话短说,我的目标是在digitalocean上托管一个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 (将#修改为@)