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

我为一个自定义应用程序创建了一个Docker镜像,该镜像需要运行一些许可证文件(一些文件和一个目录),因此我在中使用COPY命令Dockerfile将许可证文件复制到该映像:

# Base image: Application installed on Debian 10 but unlicensed
FROM me/application-unlicensed

# Copy license files
COPY *.license /opt/application/
COPY application-license-dir /var/lib/application-license-dir

我用它Dockerfile为单个容器的许可证构建新映像。由于我有5个不同的许可证,因此我创建了5个不同的映像,每个映像都有一个特定的许可证文件和目录。

许可证也固定在MAC地址上,因此当我运行五个容器之一时,我用以下--mac-address参数指定其自己的MAC地址

docker run --rm --mac-address AB:CD:EF:12:34:56 me/application-license1

这项工作,但我希望有一种更好,更聪明的方式来管理:

因为docker-compose可以指定容器的MAC地址,所以当我使用5个容器构建容器时,是否可以使用未许可的基本映像并复制许可文件和许可目录docker-compose


编辑:让我更好地解释许可证文件的结构

该应用程序将部署到/opt/applicationDocker映像的目录中。

许可证文件(*.license/opt/application与应用程序本身处于同一级别,因为除非创建一些符号链接,否则它们无法保存到Docker卷中(但我必须检查应用程序是否可以这种方式工作)。

目录application-license-dir需要位于/var/lib/application-license-dir,因此可以将其安装到Docker卷中(我必须检查该应用程序是否可以运行,但我认为可以)。

这两个*.license文件和文件到application-license-dir是二进制的,所以我不能脚本或在运行时创建它们。

所以:

  1. 可以docker-compose结合并将其安装在一个码头工人卷之前创建多克尔主机服务器上的本地目录?
  2. 可以docker-compose将我的许可证文件和许可证目录从GIT存储库(本地克隆)复制到在步骤1中创建的本地目录中?
  3. 可以docker-compose在容器/opt/application目录中创建一些符号链接,以*.license存储到卷中文件?
大卫·迷兹

对于每次您运行容器或在不同系统上运行容器时有所不同的情况,通常不希望在Dockerfile中指定它们。这包括您在上面显示的许可证文件;用户ID之类的内容也与此模式匹配;根据配置文件的固定程度,它们也可以计算在内。(对于每次运行容器相同的事情,您确实希望它们出现在映像中;尤其是这是应用程序源代码。)

您可以使用Docker绑定安装在运行时将文件注入到容器中。使用volumes:指令的绑定安装有Compose语法

这将为您提供一个大致的Compose文件:

version: '3'
services:
  app1:
    image: me/application-unlicensed
    volumes:
      - './app1.license:/opt/application/app.license'
      - './application-license-dir:/var/lib/application-license-dir'
    mac_address: 'AB:CD:EF:12:34:56'

这样的绑定安装非常适合将配置文件推送到容器中。它们可以提供一个空的主机目录,可以在其中写入日志文件,但否则就不是从映像中复制数据的机制。如果您的应用程序无法将其所有状态存储在外部数据库中,它们还可以用作存储需要用完容器的数据的场所。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 docker-compose 或 dockerfile 挂载目录(无需复制)

来自分类Dev

Docker复制的文件被视为目录

来自分类Dev

使用smbclient和目录路径复制文件

来自分类Dev

使用smbclient和目录路径复制文件

来自分类Dev

在docker-compose文件中复制失败

来自分类Dev

使用Docker / Docker compose运行Postgres迁移

来自分类Dev

使用mysql和自己的docker容器运行docker-compose

来自分类Dev

使用Docker服务和Docker Compose进行强大的配置旋转

来自分类Dev

使用Docker和IDE

来自分类Dev

无法使用docker cp从/ tmp复制文件

来自分类Dev

使用docker cp递归复制文件

来自分类Dev

使用 docker compose 进行编译

来自分类Dev

使用父目录和dockerfile进行构建时docker-compose生成错误

来自分类Dev

是否有使用docker compose复制容器的方法?

来自分类Dev

docker-compose错误:Windows上的“无此类文件或目录”

来自分类Dev

Docker Compose:.env:没有这样的文件或目录/ NodeJS

来自分类Dev

Docker compose不会将文件或目录写入主机

来自分类Dev

Docker-Compose文件

来自分类Dev

docker 在 docker 中 docker compose

来自分类Dev

如何使用Docker Compose设置Dockerfile的“当前”目录?

来自分类Dev

Docker-compose 挂载目录

来自分类Dev

如何使用docker-compose将docker容器目录映射到主机?

来自分类Dev

使用Docker Compose将主机的SSH密钥注入Docker Machine

来自分类Dev

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

来自分类Dev

使用docker-compose增加docker卷大小

来自分类Dev

如何使用docker-compose将docker容器彼此链接

来自分类Dev

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

来自分类Dev

Cifs使用docker-compose安装在Docker容器中

来自分类Dev

如何使用docker-compose杀死特定的Docker容器?

Related 相关文章

热门标签

归档