我有一个简单的Perl脚本,如下所示,它在/ops/dim/foo
下创建一个目录logs
。当运行在Docker容器中时,这个Perl脚本不会创建目录。
makedir-script.pl:
#!/usr/bin/perl
use warnings;
use strict;
my @i = (1..9);
for(@i){
print("$_: Hello, World!n");
}
my $sptpath = "/ops/dim/foo";
mkdir "$sptpath/logs" unless(-d "$sptpath/logs");
print("Opening POD created logs folder!n");
码头工人文件:
FROM ubuntu:16.10
WORKDIR /ops/dim/foo
COPY makedir-script.pl ./
CMD perl makedir-script.pl
您的脚本失败,因为$scriptpath
没有设置为任何内容。
它尝试做mkdir "$scriptpath/logs"
,因为/ops/dim/foo/logs
不存在。
你可能想用$sptpath
代替,所以你的语句变成
mkdir "$sptpath/logs" unless(-d "$sptpath/logs");
@Hans Kilian的回答很好,但如果你只需要创建一个文件夹,很容易在你的Dockerfile中做到。就像这样:
RUN mkdir -p /ops/dim/foo/logs