为什么 docker-compose 不将数据从容器保存到我的本地机器?
Why docker-compose don't save data from container to my local machine?
我正在尝试创建一个简单的 docker 应用程序,将数据保存到一个简单的数据库中
app.py
docker-compose.yml
Dockerfile
requirements.txt
db/
db.txt
tmp.txt
app.py
import datetime
import os
from flask import Flask
app = Flask(__name__)
BASE_FOLDER = os.path.dirname(os.path.abspath(__file__))
RESOURCE_DIR = os.path.join(BASE_FOLDER, "db")
@app.route("/")
def hello_world():
with open(os.path.join(RESOURCE_DIR, "db.txt"), "a+") as f:
date = datetime.datetime.now().strftime("%d.%m.%Y %H:%M:%S")
f.write(f" {date}\n")
data_f = f.read()
return {
"date": date,
"os": os.listdir(),
"os_db": os.listdir("./db"),
"db.txt": data_f,
"hmmm": "hmmm",
}
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080, debug=True)
docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "8080:8080"
volumes:
- db:/app/db
volumes:
db:
Docker 文件
FROM python:3.10.4
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python","app.py"]
requerements.txt
-i https://pypi.org/simple
click==8.1.3; python_version >= '3.7'
colorama==0.4.4; platform_system == 'Windows'
flask==2.1.2
itsdangerous==2.1.2; python_version >= '3.7'
jinja2==3.1.2; python_version >= '3.7'
markupsafe==2.1.1; python_version >= '3.7'
werkzeug==2.1.2; python_version >= '3.7'
db.txt 有一些数据,我希望 docker-compose 运行 在此数据库中添加简单数据,但它不起作用 idk 为什么..我在做什么错了?
abc abc 123
some dasdas
das aaa
将音量更改为:./db:/app/db
,注意 ./
在您的撰写文件中 db
是一个命名卷,docker 将在某处创建一个空卷并绑定它。使用 ./
会告诉 docker 这是当前目录中的相对路径,并将您的 db
文件夹挂载到 /app/db
.
这对于您的用例应该足够了。
阅读更多:
我正在尝试创建一个简单的 docker 应用程序,将数据保存到一个简单的数据库中
app.py
docker-compose.yml
Dockerfile
requirements.txt
db/
db.txt
tmp.txt
app.py
import datetime
import os
from flask import Flask
app = Flask(__name__)
BASE_FOLDER = os.path.dirname(os.path.abspath(__file__))
RESOURCE_DIR = os.path.join(BASE_FOLDER, "db")
@app.route("/")
def hello_world():
with open(os.path.join(RESOURCE_DIR, "db.txt"), "a+") as f:
date = datetime.datetime.now().strftime("%d.%m.%Y %H:%M:%S")
f.write(f" {date}\n")
data_f = f.read()
return {
"date": date,
"os": os.listdir(),
"os_db": os.listdir("./db"),
"db.txt": data_f,
"hmmm": "hmmm",
}
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080, debug=True)
docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "8080:8080"
volumes:
- db:/app/db
volumes:
db:
Docker 文件
FROM python:3.10.4
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python","app.py"]
requerements.txt
-i https://pypi.org/simple
click==8.1.3; python_version >= '3.7'
colorama==0.4.4; platform_system == 'Windows'
flask==2.1.2
itsdangerous==2.1.2; python_version >= '3.7'
jinja2==3.1.2; python_version >= '3.7'
markupsafe==2.1.1; python_version >= '3.7'
werkzeug==2.1.2; python_version >= '3.7'
db.txt 有一些数据,我希望 docker-compose 运行 在此数据库中添加简单数据,但它不起作用 idk 为什么..我在做什么错了?
abc abc 123
some dasdas
das aaa
将音量更改为:./db:/app/db
,注意 ./
在您的撰写文件中 db
是一个命名卷,docker 将在某处创建一个空卷并绑定它。使用 ./
会告诉 docker 这是当前目录中的相对路径,并将您的 db
文件夹挂载到 /app/db
.
这对于您的用例应该足够了。
阅读更多: