我的 Dockerfile
FROM python:3.8
ARG index_url
ENV PYTHONUNBUFFERED 1
WORKDIR /usr/src/antiquely
COPY ./ /usr/src/antiquely
RUN apt-get -y update
RUN apt-get -y install python-mysqldb
RUN apt-get -y install python3-dev build-essential default-libmysqlclient-dev
RUN pip install -r requirements.txt
CMD ["/bin/bash"]
docker-compose 文件
version: "3"
services:
web:
container_name: antiquely
build: ./
# command: python manage.py runserver 0.0.0.0:8000
command: "bash -c 'python manage.py runserver 0.0.0.0:8000'"
working_dir: /usr/src/antiquely
ports:
- "8000:8000"
volumes:
- ./:/usr/src/antiquely
links:
- db
#mysql
db:
image: mysql
restart: always
environment:
MYSQL_DATABASE: "baby"
MYSQL_USER: "soubhagya"
MYSQL_PASSWORD: "Thinkonce"
MYSQL_ROOT_PASSWORD: "Thinkonce"
volumes:
- /var/run/mysqld
ports:
- "3306:3306"
我有我的 docker 和 docker-compose 它正在构建和正常运行,但每次我构建它时都会创建新的数据库 所以清除旧的数据库数据
有什么办法可以解决这个问题吗?
请看。
答案 0 :(得分:0)
为了在 任何 docker 容器的运行之间维护数据,您必须提供卷挂载。
您通常可以在您使用的图像的官方页面中看到此类说明。例如,来自 DockerHub 上的 mysql 图像:
<块引用>命令的 -v /my/own/datadir:/var/lib/mysql 部分将底层主机系统中的 /my/own/datadir 目录挂载为容器内的 /var/lib/mysql,其中 MySQL默认情况下将写入其数据文件。
(查找“存储数据的位置”部分)。
在您的情况下,您应该将卷指令添加到您的 docker-compose 中的 db
服务定义:
db:
# ...
volumes:
- /my/own/datadir:/var/lib/mysql