docker中的烧瓶热装不起作用,日志显示情况并非如此



我在PyCharm中运行以下docker-compose.yml,它运行docker-compose up

version: '3'
services:
posts:
environment:
FLASK_DEBUG: 1
image: flask-blog-posts
build:
context: .
dockerfile: 'posts/Dockerfile'
ports:
- "5001:5001"
comments:
environment:
FLASK_DEBUG: 1
image: flask-blog-comments
build:
context: .
dockerfile: 'comments/Dockerfile'
ports:
- "5002:5002"

其依次启动CCD_ 3和CCD_。以下是posts服务的日志:

* Debug mode: on
2022-09-22T17:17:44.094571019Z WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
2022-09-22T17:17:44.094599147Z  * Running on all addresses (0.0.0.0)
2022-09-22T17:17:44.094603187Z  * Running on http://127.0.0.1:5001
2022-09-22T17:17:44.094606086Z  * Running on http://172.18.0.3:5001
2022-09-22T17:17:44.094809796Z Press CTRL+C to quit
2022-09-22T17:17:44.096079648Z  * Restarting with stat
2022-09-22T17:17:44.498014077Z  * Debugger is active!
2022-09-22T17:17:44.499326875Z  * Debugger PIN: 643-209-648
2022-09-22T17:18:11.411390459Z 172.18.0.1 - - [22/Sep/2022 17:18:11] "GET / HTTP/1.1" 200 -
2022-09-22T17:18:13.610573254Z 172.18.0.1 - - [22/Sep/2022 17:18:13] "GET /favicon.ico HTTP/1.1" 404 -
2022-09-22T17:19:12.423894271Z 172.18.0.1 - - [22/Sep/2022 17:19:12] "GET / HTTP/1.1" 200 -

它清楚地表明调试器是活动的,但是,当我对相应的应用程序代码进行更改时,什么都不会发生,更改也不会被检测到。目录如下所示:

├── README.md
├── comments
│   ├── Dockerfile
│   ├── __init__.py
│   └── app.py
├── docker-compose.yml
├── posts
│   ├── Dockerfile
│   ├── __init__.py
│   └── app.py
├── requirements.txt
├── static
└── templates

posts/app.pycomments/app.py包含如下相同的代码:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello world!'

if __name__ == '__main__':
app.run()

这里有两个docker文件,除了分别用于posts和comments的端口50015002之外,它们几乎相同。

FROM python:3.10
COPY . .
RUN pip install -r requirements.txt
WORKDIR comments
CMD [ "flask", "run", "--host=0.0.0.0", "--port=5001"]

我需要,每当我对代码进行任何更改时,它都应该相应地反映和重新加载。当前行为:我在app.py中的任何一个中进行更改,例如:将Hello world!更改为Hello earth!,如果我刷新页面50次,我仍然会得到Hello world。我尝试重建两个容器,重新启动docker,删除配置文件。。。什么都不管用。

这是因为您的代码被复制到一个容器&那么该容器正在运行代码。您所做的更改不在系统的容器中。如果你想让更改反映出来,你需要在文件中添加一个卷,如下所示::

version: '3'
services:
posts:
environment:
FLASK_DEBUG: 1
volumes:
- .:/code
image: flask-blog-posts
build:
context: .
dockerfile: 'posts/Dockerfile'
ports:
- "5001:5001"
comments:
environment:
FLASK_DEBUG: 1
volumes:
- .:/code
image: flask-blog-comments
build:
context: .
dockerfile: 'comments/Dockerfile'
ports:
- "5002:5002"

通过这种方式,当您对进行更改时/localpath目录,它们将反映在容器中。


更新-为其他文件以及添加准确的更改

帖子&评论Dockerfiles-

FROM python:3.10
WORKDIR /code
COPY . .
RUN pip install -r requirements.txt
WORKDIR comments
CMD [ "flask", "run", "--host=0.0.0.0", "--port=5001"]

相关内容

最新更新