在docker中使用Perl Script创建目录



我有一个简单的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