JavaでDockerイメージを作成し、jarファイルをイメージにコピーしています。私のDockerfileは:
FROM anapsix/Alpine-Java
MAINTAINER myNAME
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar
RUN Java -jar /home/testprj-1.0-SNAPSHOT.j
次のコマンドを実行した後:
docker build -t imageName.
コンソールには、アプリケーションからの出力が表示され、すべて問題ありません。しかし、イメージを停止すると、イメージを再度実行する方法がわかりません。次のコマンドを実行すると:
docker run -i -t imageName Java -jar /home/testprj-1.0-SNAPSHOT.jar
アプリケーションは再び実行されますが、私のDockerfileにはすでにこのコマンドが記述されています。このコマンドなしでイメージを実行し、アプリケーションを自動的に実行するにはどうすればよいですか?
画像とコンテナには違いがあります。
あなたの場合:
画像を変更します。
FROM anapsix/Alpine-Java
MAINTAINER myNAME
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar
CMD ["Java","-jar","/home/testprj-1.0-SNAPSHOT.jar"]
イメージを構築します。
docker build -t imageName .
次に、コンテナ内でプログラムを呼び出します。
docker run --name myProgram imageName
次に、コンテナを再起動してプログラムを再起動します。
docker restart myProgram
あなたのプログラムは変わりましたか?イメージを再構築してください!:
docker rmi imageName
docker build -t imageName .
これはあなたが尋ねたものとはまったく異なるかもしれませんが、justJARを実行する必要がある場合(それはより大きなカスタムコンテナの一部であるのではなく)ボリューム/フォルダーをJARにマッピングし、標準のアップストリームイメージを使用して実行するこのアプローチが気に入っています。
docker run --rm -it -v /home/me/folderHoldingJar:/home:Z Java:latest /bin/bash -c '/usr/bin/Java -jar /home/theJarFile.jar'
さらに、JARがGUIを表示する必要がある場合は 追加の引数 を追加できます。