4

我已经制作了脚本并从 /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();
4

0 回答 0