当前位置: 首页 > 知识库问答 >
问题:

如何使用Testcontainers将可执行文件复制到Docker容器

廖弘伟
2023-03-14
@Container
static LocalStackContainer localStack = new LocalStackContainer("0.10.0")
  .withServices(S3)
  .withCopyFileToContainer(MountableFile.forClasspathResource("init.sh"), "/docker-entrypoint-initaws.d/init.sh");

在我的计算机上,该文件具有以下权限:

$ ls -al
total 16
drwxr-xr-x  4 xyz  staff  128 Apr 16 20:51 .
drwxr-xr-x  4 xyz  staff  128 Apr 16 08:43 ..
-rw-r--r--  1 xyz  staff  135 Apr 16 20:14 application.yml
-rwxr-xr-x  1 xyz  staff  121 Apr 16 20:51 init.sh

我还尝试使用.WithClasspathResourceMapping()复制此文件,但这采用了一种绑定模式,该模式只提供read_onlyread_write

共有1个答案

韩淇
2023-03-14

您可以使用mountablefile类的另一个生成器,它使用带有posix文件模式值的mode参数来更改权限。例如,使脚本仅对所有者可执行

...
.withCopyFileToContainer(MountableFile.forClasspathResource("init.sh", 0744), "/docker-entrypoint-initaws.d/init.sh");

0744是八进制文件模式文字,对应于-rwxr--r--权限。

然而,我尝试了与Localstack0.10.8相同的配置,初始化工作甚至没有使脚本可执行。

 类似资料:
  • 我有一个,其中我将现有目录(包含内容)复制到工作正常的容器: Dockerfile 但当我使用文件中只有目录,而在中没有任何内容。 docker-compose.yml: 也许我不明白的功能,如果是这种情况,请告诉我如何通过文件将现有文件复制到容器。

  • 我知道,有可能通过在主机和docker容器之间双向复制文件,也有可能通过docker-py从正在运行的容器中获取文件。但是我不知道如何使用docker-py将文件从主机复制到运行容器。你们有遇到过这种问题吗?是否可以或者我必须使用python执行命令。我想避免这种解决方案。

  • 我正在使用docker容器来编译一段代码,我不一定要将其docker化。我已使用必要的构建工具设置了一个映像,但我希望以某种方式将编译后的文件从容器中取出,而无需使用docker cp container:/file host/file命令。换句话说,我希望自动化这个过程,以便在构建完成后,将生成的文件复制到主机。 Dockerfile

  • 我有一个docker映像,它有所有需要的文件,当我说docker运行时,我希望它将docker映像中的文件夹的内容复制到主机目录。之后不再需要docker并停止

  • 我正在从docker容器中运行elasticsearch。 在为ssl和屏蔽配置elasticsearch时,我的文件获得非法条目,即而不是。 现在我的docker容器没有启动,并出现以下错误: 如何在不丢失数据的情况下编辑或替换它,或替换现有容器中的文件?