flask+vue+docker-compose+nginx多容器编排部署

一、环境

ubuntu
docker
docker-compose

二、项目结构

在这里插入图片描述

backend/
	app.py
	Dockerfile
	requirements.txt
Dockerfile:
---------------
FROM python:3.7
MAINTAINER jimmy
ENV PIPURL "https://pypi.tuna.tsinghua.edu.cn/simple"
WORKDIR /backend
COPY . .
RUN pip install -r requirements.txt -i ${PIPURL} --default-timeout=1000
CMD ["python", "app.py"]
docker-compose.yml:
---------------
version: '3'

services:

  mymysql:

    image: mysql:5.7.18

    container_name: xxx_mysql

    restart: always

    environment:

      - MYSQL_ROOT_PASSWORD=xxx

    volumes:

      - ./mysql/data:/var/lib/mysql

      - ./mysql/conf.d:/etc/mysql/conf.d

    ports: 

      - "3306:3306"



  backend:

    image: xxx_bk:0.0.1

    build: ./backend

    restart: always

    container_name: xxx_bk

    depends_on:

      - mymysql

    volumes:

      - ./backend:/backend

    ports:

      - "8000:8000"   # backend



  nginx:

    image: nginx:latest

    restart: always

    container_name: xxx_nginx

    volumes:

      - ./nginx/conf:/etc/nginx/conf.d

      - ./nginx/dist:/dist

    ports:

      - "8888:8888"   # frontend
nginx.conf
------------
server {
        listen       8888;
        server_name  xxx.xxx.xxx;
        location / {
            root   /dist;
            index  index.html index.htm;
        }
}

三、准备工作

vue.config.js
-------------
module.exports = {
  publicPath: "./",
  outputDir: "dist",
  assetsDir: "static",
}
--------------
npm run build
scp -r xxx\dist abc@192.168.xxx.xxx:xxx/nginx
app.py
-----------
# 注意中文编码
DF.to_excel(fr'汉字.xlsx', encoding='GBK')
# 开放主机与端口
app.run(host="0.0.0.0", port=8000)

四、构建运行容器

docker-compose.yml 目录下:
# 构建并后台运行容器
docker-compose up -d
# 查看容器
docker ps
# 进入容器
docker exec -it container_id /bin/bash
# 查看运行日志
docker logs -f container_id 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Flask和JavaScript解决"Content-Security-Policy"头缺失问题的方法如下: 1. 在Flask应用程序中设置"Content-Security-Policy"头。可以通过在应用程序的路由函数中使用`@app.after_request`装饰器来设置响应头。示例代码如下: ```python from flask import Flask, make_response app = Flask(__name__) @app.after_request def add_csp_header(response): response.headers['Content-Security-Policy'] = "default-src 'self'" return response ``` 上述代码将在每个响应中添加"Content-Security-Policy"头,并将其值设置为"default-src 'self'",表示只允许加载来自同一域名的资源。 2. 在JavaScript中处理跨域请求。如果你的JavaScript代码需要从不同的域名加载资源,可能会遇到"Access-Control-Allow-Origin"错误。为了解决这个问题,可以在服务器端设置响应头,允许来自其他域名的请求。示例代码如下: ```python from flask import Flask, make_response app = Flask(__name__) @app.after_request def add_cors_header(response): response.headers['Access-Control-Allow-Origin'] = '*' return response ``` 上述代码将在每个响应中添加"Access-Control-Allow-Origin"头,并将其值设置为"*",表示允许来自任何域名的请求。 3. 在前端页面中引入JavaScript文件。在HTML文件中,使用`<script>`标签引入JavaScript文件,并确保该文件位于与HTML文件相同的域名下。示例代码如下: ```html <!DOCTYPE html> <html> <head> <title>Flask + JavaScript</title> <script src="static/js/script.js"></script> </head> <body> <!-- 页面内容 --> </body> </html> ``` 上述代码将在页面中引入名为"script.js"的JavaScript文件,该文件位于"static/js/"目录下。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值