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

Java 如何使用Testcontainers将可执行文件复制到Docker容器,java,docker,junit5,testcontainers,localstack,Java,Docker,Junit5,Testcontainers,Localstack,我正在尝试将可执行初始化bash脚本init.sh复制到使用JUnit 5模块使用Testcontainers(1.13.0)创建的Localstack Docker容器中: @Container static LocalStackContainer localStack = new LocalStackContainer("0.10.0") .withServices(S3) .withCopyFileToContainer(MountableFile.forClasspathReso

我正在尝试将可执行初始化bash脚本
init.sh
复制到使用JUnit 5模块使用Testcontainers(1.13.0)创建的Localstack Docker容器中:

@Container
static LocalStackContainer localStack = new LocalStackContainer("0.10.0")
  .withServices(S3)
  .withCopyFileToContainer(MountableFile.forClasspathResource("init.sh"), "/docker-entrypoint-initaws.d/init.sh");
但是在创建的Docker容器中,文件缺少执行权限(通过使用
Docker exec-it ID/bin/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()
复制此文件,但这采用的是绑定模式,该模式仅提供
只读
读写
您可以使用另一个
可装载文件
类,该类使用带有posix文件模式值的
模式
参数来更改权限。例如,使脚本仅可供所有者执行:

...
.withCopyFileToContainer(MountableFile.forClasspathResource("init.sh", 0744), "/docker-entrypoint-initaws.d/init.sh");
0744
是一个八进制文件模式文字,对应于
-rwxr--r--
权限

然而,我尝试了使用Localstack
0.10.8
的相同配置,初始化工作甚至没有使脚本可执行