【发布时间】:2020-08-22 07:10:23
【问题描述】:
我正在尝试从 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.
我的 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
这是我的 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)
这是我的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"]
这是我的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
这是我在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)
这是我的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"]
这是我运行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
【问题讨论】:
-
您也可以发布 api 的代码吗?
-
@emher 当然!我已经添加了它。请检查。
标签: python docker docker-compose dockerfile plotly-dash