generated from xinetzone/xbook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
deployment.md
128 lines (87 loc) · 3.47 KB
/
deployment.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# 部署 Dash 应用
参考:[Deploy your Dash App | Dash for Python Documentation | Plotly](https://dash.plotly.com/deployment)
默认情况下,Dash 应用程序运行在本地主机上——你只能在自己的机器上访问它们。要共享 Dash 应用程序,你需要将其“部署”到服务器上。
Dash Enterprise 可以安装在 AWS、Azure、GCP 或[内置 Linux 服务器](https://plotly.com/dash/on-premises-linux/?utm_source=docs&utm_medium=workspace&utm_campaign=nov&utm_content=linux)的 Kubernetes 服务上。[找出你的公司是否在使用 Dash Enterprise](https://go.plotly.com/company-lookup)。
## Heroku 免费分享公共 Dash 应用程序
Heroku 是部署和管理公共 Flask 应用程序最简单的平台之一。Heroku 和 Dash Enterprise 的基于 git 和 buildpack 的 ui 部署几乎是相同的,如果你已经在使用 Heroku,可以轻松过渡到 Dash Enterprise。
查看官方 [Heroku Python](https://devcenter.heroku.com/articles/getting-started-with-python) 指南。
这里有一个简单的例子。这个例子需要一个 Heroku 帐户、`git` 和 `conda`。
### 步骤1:为你的项目创建一个新的文件夹
```sh
$ mkdir dash_app_example
$ cd dash_app_example
```
### 步骤2:使用 `git` 和 `conda` 初始化项目
```sh
$ git init # 初始化 Git 仓库
$ conda create -n dash-book python=3.9 # 创建环境
$ conda activate dash-book # 激活环境
```
安装一些 Python 包:
```sh
$ pip install dash
$ pip install plotly
```
为了部署 Dash,需要安装:
```sh
$ pip install gunicorn
```
### 步骤3:用一个示例 app (`app.py`)、一个 `.gitignore` 文件、`requirements.txt` 和一个用于部署的 `Procfile` 初始化这个文件夹
在项目文件夹中创建以下文件:
`app.py`
```python
import os
import dash
import dash_core_components as dcc
import dash_html_components as html
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
server = app.server
app.layout = html.Div([
html.H2('Hello World'),
dcc.Dropdown(
id='dropdown',
options=[{'label': i, 'value': i} for i in ['LA', 'NYC', 'MTL']],
value='LA'
),
html.Div(id='display-value')
])
@app.callback(dash.dependencies.Output('display-value', 'children'),
[dash.dependencies.Input('dropdown', 'value')])
def display_value(value):
return 'You have selected "{}"'.format(value)
if __name__ == '__main__':
app.run_server(debug=True)
```
`.gitignore`
```
*.pyc
.DS_Store
```
`Procfile`
```
web: gunicorn app:server
```
```{note}
`app` 指的是文件名 `app.py`。`server` 指的是该文件中的变量 `server`
```
`requirements.txt` 描述了您的 Python 依赖项。你可以自动填写这个文件:
```sh
$ pip freeze > requirements.txt
```
### 步骤四:初始化 Heroku,将文件添加到 Git 中,然后部署
```sh
$ heroku create my-dash-app # change my-dash-app to a unique name
$ git add . # add all files to git
$ git commit -m 'Initial app boilerplate'
$ git push heroku main # deploy code to heroku
$ heroku ps:scale web=1 # run the app with a 1 heroku "dyno"
```
### 步骤五:更新代码并重新部署
当你用自己的代码修改 `app.py` 时,你需要将这些更改添加到 `git` 中,并将这些更改推到 `heroku` 中。
```sh
$ git status # view the changes
$ git add . # add all the changes
$ git commit -m 'a description of the changes'
$ git push heroku main
```