使用docker-compose创建和装载仅数据容器

时间:2016-03-14 12:46:15

标签: docker docker-compose dockerfile

ocker 1.9引入了一个新的卷API,用于创建仅限数据的容器(通过docker volume create)。 是否可以创建它们并通过docker-compose挂载它们?

我想创建一个仅数据容器来存储来自MySQL数据库(https://hub.docker.com/_/mysql/)的数据。可悲的是,我无法找到任何文档是否可以使用docker-compose本身。

从Docker Compose 1.6.2开始是否可行。如果是,怎么做?

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