如何仅使用docker-compose.yml创建数据容器?

iva*_*van 30 volumes docker docker-compose

这个问题来自Docker的存储库中的一个问题:
https //github.com/docker/compose/issues/942

我无法弄清楚如何使用docker compose创建数据容器(没有进程正在运行).

Jan*_*zki 25

究竟该怎么做取决于你的数据专用容器使用的图像.如果你的图像有entrypoint,你需要在你的图像中覆盖它docker-compose.yml.例如,这是来自docker hub的官方MySql映像的解决方案:

DatabaseData:
  image: mysql:5.6.25
  entrypoint: /bin/bash

DatabaseServer:
  image: mysql:5.6.25
  volumes_from:
    - DatabaseData
  environment:
    MYSQL_ROOT_PASSWORD: blabla
Run Code Online (Sandbox Code Playgroud)

当您执行docker-compose up此操作时,您将获得一个容器..._DatabaseData_1,其中显示Exited您何时调用的状态docker ps -a.进一步调查docker inspect将显示,它有一个时间戳0.这意味着容器从未运行过.就像它是由泊坞窗的主人说撰写这里.

现在,只要你不做docker-compose rm -v,你的数据只有容器(..._DatabaseData_1)不会丢失它的数据.所以,你可以做docker-compose stop,并docker-compose up经常随你喜欢.

如果您想使用像这样的专用数据图像,tianon/true则工作方式相同.在这里你不需要覆盖它entrypoint,因为它不存在.看起来该图像和docker组合存在一些问题.我没有尝试过,但是如果您遇到任何问题,这篇文章可能值得一读.

通常,对于用于访问它的容器的数据集合容器,使用相同的映像似乎是个好主意.有关详细信息,请参阅仅数据容器疯狂.