sironekotoroの日記

Perl で楽をしたい

Docker上でPerlを動かして、ホストにあるファイルを実行する

Perl インストールしないで Perl 実行するにはどうするんがいいのかなー?的に思って作った環境。

Perl 公式の Docker イメージ使ってみたけど、結構サイズが大きかった。

初回だけDockerイメージのダウンロードに時間がかかります。

hub.docker.com

$ docker images perl
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
perl                5.30.2              a8b6deb2e511        12 days ago         857MB
perl                latest              a8b6deb2e511        12 days ago         857MB

中に入って確認するとdebianみたいっすね。

root@6210f71a6f0d:~# cat /etc/debian_version
10.3

ファイルの配置はこんな感じで。

$ tree
.
├── docker-compose.yml
└── hello.pl

0 directories, 2 files

hello.pl

#!/usr/bin/env perl
use strict;
use warnings;

print "Hello, World\n";

docker-compose.yml

version: '3'
services:
  perl:
    image: "perl:5.30.2"
    volumes:
     - ".:/usr/src/myapp"
    working_dir: "/usr/src/myapp"
    entrypoint:
     - "/usr/local/bin/perl"

こうやって実行。docker-compose.yml と、動かしたいスクリプトは同じところ置く。

$ docker-compose run perl hello.pl
Hello, World

Dockerfileでやってみたけど、いざコマンドラインから実行するときに引数が長くなってしまうのが嫌で(個人の感想です)、docker-compose.yml にまとめましたとさ。

ちなみに、と言うか、数ヶ月後の自分が勘違いしそうなので書いておくと、

$ docker-compose run perl hello.pl

ここの perl ってのは、Dockerコンテナ内の /usr/bin/local/perl ではなくて、docker-compose.yml 内にある services 名としての perl なので気をつける。

紛らわしい名前付はよくないですねー