docker-compose 在初始启动时命名卷复制内容

马特

我可能对卷的工作方式有点困惑,我一遍又一遍地阅读相同的东西,对我来说它应该有效。如果第一次初始化卷,我希望容器内文件夹中的内容复制。


我有这样的事情:

我有一个这样的 Dockerfile:https : //github.com/docker-library/tomcat/blob/f6dc3671bf56465917b52c8df4356fa8f0ebafcd/7/jre7/Dockerfile

而之前

EXPOSE 8080
CMD ["catalina.sh", "run"]

我有类似的东西

Tomcat Dockerfile

VOLUME ["/opt/tomcat/conf"]
EXPOSE 8080
CMD ["catalina.sh", "run"]

当我构建此映像时,我将其标记为 tomcat。


然后我有另一个 Dockerfile,里面有一堆我设置的环境变量和一个脚本。

像这样:

MyApp Dockerfile

FROM tomcat

ENV SOME_VAR=Test1
COPY assets/script.sh /script.sh

第二个图像是从第一个图像构建的,只是添加了一个脚本并设置了一些设置。到现在为止还挺好。

我想在我的 docker-compose.yml 文件中做这样的事情:


Docker 撰写文件

website:
  image: myapp
  ports:
    - "8000:8080"
  volumes:
    - /srv/myapp/conf:/opt/tomcat/conf

我希望/opt/tomcat/conf的内容在第一次创建该文件夹时复制到/srv/myapp/conf 中我读到的所有内容都表明这应该有效,但它只是创建文件夹而不复制内容。我在这里错过了什么吗?

基本上我有这个问题:https : //github.com/moby/moby/issues/18670

哦,我的 docker-compose yaml 文件使用的是 2.1 版,如果这有所不同的话。

塔伦·拉瓦尼

当您在容器内绑定主机卷时,您正在寻找的东西是不可能的。只有当你有一个命名卷时它才有效。然后 docker 会将文件夹的内容复制到一个容器中。您需要将撰写文件更改为

version: '3'
services:
  website:
    image: myapp
    ports:
      - "8000:8080"
    volumes:
      - appconfig:/opt/tomcat/conf
volumes:
  appconfig: {}

如果您想获取配置,那么您可以使用 shell 脚本和您的原始撰写文件

#!/bin/bash
if [ ! -d "/srv/myapp/conf" ]; then
   mkdir /srv/myapp/conf
   docker create --name myappconfig myapp
   docker cp myapp:/opt/tomcat/conf /srv/myapp/
   docker rm myapp
fi

docker-compose up -d

为此,该目录第一次不应该存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Docker-compose命名挂载卷

来自分类Dev

卷和docker-compose

来自分类Dev

使用docker-compose创建命名的docker卷?

来自分类Dev

Docker / Docker-Compose中的NFS卷

来自分类Dev

docker-compose phpmyadmin启动

来自分类Dev

Docker-compose启动失败

来自分类Dev

无法启动docker-compose

来自分类Dev

docker-compose phpmyadmin启动

来自分类Dev

Docker-compose启动失败

来自分类Dev

附加终端并启动 docker compose?

来自分类Dev

Dockerfile无法复制&Docker-compose卷无法与容器同步

来自分类Dev

使用持久卷启动 postgres 容器 [docker compose]

来自分类Dev

docker-compose删除共享卷

来自分类Dev

docker-compose无法正确绑定卷

来自分类Dev

在docker-compose中创建卷

来自分类Dev

通过Docker Compose重用现有卷

来自分类Dev

通过Docker Compose重用现有卷

来自分类Dev

docker-compose卷为空

来自分类Dev

在容器启动时从Docker上的共享卷复制文件并创建符号链接

来自分类Dev

以分离模式启动时如何检查 docker-compose 日志?

来自分类Dev

在docker-compose文件中复制失败

来自分类Dev

何时可以使用docker compose提供docker卷?

来自分类Dev

docker-compose无法启动postgres映像

来自分类Dev

以生产模式在docker(-compose)中启动FusionAuth

来自分类Dev

docker-compose 构建和启动

来自分类Dev

运行“ docker-compose up时出错

来自分类Dev

docker-compose在docker-compose.yml中看不到卷更改

来自分类Dev

Docker:使用docker-compose复制文件和目录

来自分类Dev

无法从docker-compose启动postgres docker容器