rmb*_*rmb 6 python docker dockerfile docker-compose plotly-dash
我正在尝试从 docker 运行我的应用程序,但我收到了来自docker logs
破折号的错误消息。我搜索了很多但找不到任何东西。请帮忙!
docker logs
来自破折号图像的日志消息
[2020-08-22 06:44:32 +0000] [1] [INFO] Starting gunicorn 20.0.4
[2020-08-22 06:44:32 +0000] [1] [INFO] Listening at: http://0.0.0.0:8050 (1)
[2020-08-22 06:44:32 +0000] [1] [INFO] Using worker: sync
[2020-08-22 06:44:32 +0000] [8] [INFO] Booting worker with pid: 8
Failed to parse 'app.server' as an attribute name or function call.
[2020-08-22 06:44:33 +0000] [8] [INFO] Worker exiting (pid: 8)
[2020-08-22 06:44:33 +0000] [1] [INFO] Shutting down: Master
[2020-08-22 06:44:33 +0000] [1] [INFO] Reason: App failed to load.
Run Code Online (Sandbox Code Playgroud)
我的 API 工作正常
[2020-08-22 06:44:31 +0000] [1] [INFO] Starting gunicorn 20.0.4
[2020-08-22 06:44:31 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2020-08-22 06:44:31 +0000] [1] [INFO] Using worker: sync
[2020-08-22 06:44:31 +0000] [8] [INFO] Booting worker with pid: 8
Run Code Online (Sandbox Code Playgroud)
这是我的 Dash 应用程序。文件名位于文件夹app.py
内dash
。
app = dash.Dash(
__name__,
external_stylesheets=external_stylesheets,
meta_tags=[
{"name": "viewport", "content": "width=device-width, initial-scale=1"}
],
suppress_callback_exceptions=True
)
if __name__ == '__main__':
ENVIRONMENT = os.environ.get("ENVIRONMENT", "dev")
DEBUG = ENVRIONMENT == "dev"
HOST = '0.0.0.0' if ENVIRONMENT == "prod" else 'localhost'
app.run_server(debug=DEBUG, host=HOST)
Run Code Online (Sandbox Code Playgroud)
这是我Dockerfile
的 Dash
FROM python:3.7
ADD requirements.txt /app/
WORKDIR /app
RUN pip install -r requirements.txt
ADD . /app
EXPOSE 8050
CMD ["gunicorn", "-b", "0.0.0.0:8050", "app:app.server"]
Run Code Online (Sandbox Code Playgroud)
这是我的docker-compose.yml
文件
version: '3'
services:
api:
build:
context: src/api
dockerfile: Dockerfile
environment:
- ENVIRONMENT=prod
restart: always
dash:
build:
context: src/dash
dockerfile: Dockerfile
ports:
- "8050:8050"
environment:
- ENVIRONMENT=prod
- API_URL=http://api:5000/api
depends_on:
- api
restart: always
Run Code Online (Sandbox Code Playgroud)
这是我的 api 代码作为文件夹app.py
中的文件api
app = Flask(__name__)
api = Blueprint('api', __name__)
app.register_blueprint(api, url_prefix='/api')
if __name__ == "__main__":
ENVIRONMENT = os.environ.get("ENVIRONMENT", "dev")
DEBUG = ENVIRONMENT == "dev"
HOST = '0.0.0.0' if ENVIRONMENT == "prod" else 'localhost'
app.run(debug=DEBUG, host=HOST)
Run Code Online (Sandbox Code Playgroud)
这是我Dockerfile
的 api
FROM python:3.7
ADD requirements.txt /app/
WORKDIR /app
RUN pip install -r requirements.txt
ADD . /app
EXPOSE 5000
CMD ["gunicorn", "-b", "0.0.0.0:5000", "app:app"]
Run Code Online (Sandbox Code Playgroud)
这是我跑步后得到的docker-compose up --build -d
Step 5/7 : ADD . /app
---> 5f1b89f2daeb
Step 6/7 : EXPOSE 5000
---> Running in 74a03831d03e
Removing intermediate container 74a03831d03e
---> cab01af5bfee
Step 7/7 : CMD ["gunicorn", "-b", "0.0.0.0:5000", "app:app"]
---> Running in 606197aae6fd
Removing intermediate container 606197aae6fd
---> 35be6754e766
Successfully built 35be6754e766
Successfully tagged appname_api:latest
Building dash
.
.
.
Step 5/7 : ADD . /app
---> c1111dca7a60
Step 6/7 : EXPOSE 8050
---> Running in ef1a216db216
Removing intermediate container ef1a216db216
---> a84d1d8ce503
Step 7/7 : CMD ["gunicorn", "-b", "0.0.0.0:8050", "app:app.server"]
---> Running in afc121660ddc
Removing intermediate container afc121660ddc
---> 600011a005ca
Successfully built 600011a005ca
Successfully tagged appname_dash:latest
Creating appname_api_1 ... done
Creating appname_dash_1 ... done
Run Code Online (Sandbox Code Playgroud)
我在同事的应用程序中修复了此错误,其中有以下内容app.py
:
server = Flask(__name__) # define flask app.server
app = dash.Dash(
__name__,
server=server,
)
Run Code Online (Sandbox Code Playgroud)
然后index.py
他们正在做:
from app import app
server = app.server # I add this part here
Run Code Online (Sandbox Code Playgroud)
然后 Docker CMD 是:
CMD ["gunicorn", "index:server", "-b", ":8050"]
Run Code Online (Sandbox Code Playgroud)
它奏效了。
问题在于您传递给gunicorn 的参数。根据您在此处显示的内容,我建议您尝试更改:
CMD ["gunicorn", "-b", "0.0.0.0:8050", "app:app.server"]
到:
CMD ["gunicorn", "-b", "0.0.0.0:8050", "app:server"]
归档时间: |
|
查看次数: |
6827 次 |
最近记录: |