我已经制作了脚本并从 /usr/lib/cgi-bin 在我的 VM 上运行它。我需要这个脚本在 docker 容器中以相同的方式运行。我对使用 docker 很陌生,目前在我的 Dockerfile 中有以下配置。我不确定我是否将脚本放在正确的目录中,或者我是否以正确的方式执行此操作。在端口 8080 上运行容器后,我尝试访问,ip_adress:8080/cgi-bin/shipping.pl但这只是表示无法访问该站点。我已经尝试更改 COPY 以COPY --chown=www-data:www-data shipping.pl .查看是否未向 Apache 授予权限,但这似乎不起作用。任何帮助是极大的赞赏。
Dockerfile
FROM ubuntu
RUN apt-get update
RUN DEBIAN_FRONTEND="noninteractive" apt-get install --yes apache2
RUN apt-get install --yes perl
RUN perl -MCPAN -e "install DBI"
RUN perl -MCPAN -e "install DBD::Pg"
RUN a2enmod cgid
RUN service apache2 restart
WORKDIR /usr/lib/cgi-bin
COPY shipping.pl .
Perl 脚本:shipping.pl
#!/usr/bin/perl
# load module
use DBI;
# connect
my $dbh = DBI->connect("DBI:Pg:dbname=shipping;host=192.168.56.3", "postgres", "somepassword", {'RaiseError' => 1});
# execute SELECT query
my $sth = $dbh->prepare("SELECT surname FROM surnames");
$sth->execute();
# iterate through resultset
# print values
while(my $ref = $sth->fetchrow_hashref()) {
print "Content-type: text/html\n\n";
print "$ref->{'surname'}";
}
# clean up
$dbh->disconnect();