我有四个node
,redis
,mysql
和data
的容器。当我运行docker-compose rm
时,它将删除包含容器data
的所有容器。我的mysql数据位于容器中,我不想使用容器data
为什么我必须装那些容器?
有时我必须更改node和mysql的一些配置文件并重建.So ,我必须删除容器并重新开始。
我再次使用谷歌再搜索,什么也没得到。
答案 0 :(得分:3)
事实上,出于这个原因,您需要将数据容器保留在Docker Compose之外。无论如何都不应该运行数据容器,所以这是有道理的。
因此,要创建数据容器,请执行以下操作:
docker run --name data mysql echo "App Data Container"
echo命令将完成,容器将立即退出,但只要您没有docker rm
容器,您仍然可以在--volumes-from
命令中使用它,这样您就可以撰写中的以下内容:
db:
image: mysql
volumes-from:
- data
只需删除docker-compose.yml
中的所有代码即可启动数据容器。
答案 1 :(得分:1)
替代docker-compose,在Go(https://github.com/michaelsauter/crane)中,让您创建contianer组 - 包括覆盖默认组,以便您可以忽略您的数据重建应用时的容器。
鉴于你有一个" crane.yaml"使用以下容器和组:
https://www.youtube.com/embed/VIDEOID&playlist=VIDEOID_1,VIDEOID_2"
您可以构建一次数据容器:
containers:
my-app:
...
my-data1:
...
my-data2:
...
groups:
default:
- "my-app"
data:
- "my-data1"
- "my-data2"
PS!与docker-compose不同,即使从Dockerfile构建,你必须指定一个"图像" - 当没有拉动时,这就是docker将在本地提供图像的名称!另请注意,容器名称是全局的,并且没有文件夹名称的前缀,就像它们在docker-compose中一样。
请注意,起重机至少存在一个主要缺陷:它只是忽略错位或错误拼写的字段!这使得调试docker-compose yaml变得更加困难。
答案 2 :(得分:0)
@AdrianMouat现在,当我使用docker-compose(https://github.com/docker/compose/releases)的新版本1.2rc启动所有容器时,我可以指定一个* .yml文件。如下所示:
文件:data.yml
data:
image: ubuntu
volumes:
- "/var/lib/mysql"
认为你的答案非常有用