39.2.2 COBOLプログラムをLinuxコンテナ起動時に実行する方法
ここでは,COBOLプログラムをDockerイメージに取り込んで,コンテナ起動時に実行する手順を例に説明します。
COBOLプログラムをコンテナ起動時に実行する場合は,「39.2.1 COBOL2002をLinuxコンテナに取り込む方法」で作成したDockerfileに,COBOLプログラムをDockerイメージに取り込む記述を追加して,コンテナ起動時にCOBOLプログラムを実行するように記述を変更する必要があります。
-
Dockerfile格納ディレクトリ下に作業ディレクトリを作成し,その作業ディレクトリにCOBOLプログラムを格納します。
この例では,Dockerfile格納ディレクトリの作業ディレクトリを「sample」,COBOLプログラムを「sample.out」とします。
[/]# cd <Dockerfile格納ディレクトリ>/sample [<Dockerfile格納ディレクトリ>/sample]# ls sample.out
-
COBOLプログラムをDockerイメージに取り込んで,コンテナ起動時に実行するためのDockerfileを作成します。
この例では,「39.2.1 COBOL2002をLinuxコンテナに取り込む方法」の手順3.で作成したDockerfileを基に作成します。
次に示す処理の記述個所は,太字(色付き)で示します。
-
COBOLプログラムをDockerイメージに取り込む処理
-
コンテナ起動時にCOBOLプログラムを実行する処理
# ----- Dockerfile記述例 ----- FROM rhel7.3:latest COPY local.repo /etc/yum.repos.d/ RUN yum -y install cpio.x86_64 RUN yum -y install cpp gcc glibc.i686 glibc-devel glibc-headers kernel-headers \ libgcc.i686 mpfr nss-softokn-freebl \ && yum clean all \ && rm -rf /var/cache/yum/* RUN mkdir /tmp/COBOL2002 COPY media /tmp/COBOL2002 WORKDIR /tmp/COBOL2002 RUN chmod +x ./X64LIN/setup RUN ./X64LIN/setup -f -k P-9W36-1241 ./ …1. ENV PATH $PATH:/opt/HILNGcbl2k64/bin:/usr/bin:/bin:/opt/HIISlib64/bin ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/opt/HILNGcbl2k64/lib:/opt/HIISlib64/lib:\ /opt/HISORTlib64/lib:/opt/HILNGcbl2k64/lib/cblxml ENV NLSPATH $NLSPATH:/opt/HIISlib64/%L/%N.cat:/opt/HISORTlib64/%L/%N.cat:\ /opt/HILNGcbl2k64/lib/cblxml/cat/%L/%N WORKDIR / RUN rm -rf /tmp/COBOL2002 RUN mkdir /tmp/sample …2. COPY sample /tmp/sample …3. WORKDIR /tmp/sample …4. CMD ./sample.out …5.
- 説明
-
1. COBOLプログラムをコンテナ起動時に実行する場合は,コンテナにインストールするCOBOL2002として,実行環境とシステム運用環境を提供するプログラムプロダクト(COBOL2002 Net Server Runtime(64))を指定できます。
2. コンテナに作業ディレクトリを作成します。この例では,コンテナの作業ディレクトリを「/tmp/sample」とします。
3. 手順1.でDockerfile格納ディレクトリの作業ディレクトリにコピーしたCOBOLプログラムを,コンテナの作業ディレクトリにコピーします。
4. カレントディレクトリをコンテナの作業ディレクトリに位置づけます。
5. コンテナ起動時に実行するCOBOLプログラムを指定します。
-
-
手順2.で作成したDockerfileを指定してdocker buildコマンドを実行します。
この例では,Dockerfile格納ディレクトリをカレントディレクトリに位置づけてからコマンドを実行しています。
[/]# cd <Dockerfile格納ディレクトリ> [<Dockerfile格納ディレクトリ>]# ls Dockerfile local.repo media sample [<Dockerfile格納ディレクトリ>]# docker build -t <Dockerイメージ名> ./
DockerイメージがDockerfile格納ディレクトリに作成されます。