Docker上でPerlを動かして、ホストにあるファイルを実行する
Perl インストールしないで Perl 実行するにはどうするんがいいのかなー?的に思って作った環境。
Perl 公式の Docker イメージ使ってみたけど、結構サイズが大きかった。
初回だけDockerイメージのダウンロードに時間がかかります。
$ 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 なので気をつける。
紛らわしい名前付はよくないですねー