ocker 1.9引入了一个新的卷API,用于创建仅限数据的容器(通过docker volume create
)。
是否可以创建它们并通过docker-compose挂载它们?
我想创建一个仅数据容器来存储来自MySQL数据库(https://hub.docker.com/_/mysql/)的数据。可悲的是,我无法找到任何文档是否可以使用docker-compose本身。
从Docker Compose 1.6.2开始是否可行。如果是,怎么做?
答案 0 :(得分:2)
考虑到compose/volume.py#L23确实包含volume.create()
方法,应该可以。
请参阅the volume section of Compose file reference:
volumes:
# Just specify a path and let the Engine create a volume
- /var/lib/mysql
# Named volume
- datavolume:/var/lib/mysql
这会调用docker volume create
。
答案 1 :(得分:0)
如果您想creetae和存储数据库数据,请使docker-compose.yml看起来像 如果要使用Dockerfile
version: '3.1'
services:
php:
build:
context: .
dockerfile: Dockerfile
ports:
- 80:80
volumes:
- ./src:/var/www/html/
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- mysql-data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 8080:8080
volumes:
mysql-data:
您的docker-compose.yml看起来像 如果要使用映像而不是Dockerfile
version: '3.1'
services:
php:
image: php:7.4-apache
ports:
- 80:80
volumes:
- ./src:/var/www/html/
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- mysql-data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 8080:8080
volumes:
如果要存储或保存mysql的数据,则 必须记住在docker-compose.yml中添加两行
volumes:
- mysql-data:/var/lib/mysql
和
volumes:
mysql-data:
之后使用此命令
docker-compose up -d
现在,您的数据将保持不变,即使使用此命令也不会被删除
docker-compose down
额外:-但如果要删除所有数据,则将使用
docker-compose down -v