0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[小ネタ] mavenのdockerコンテナ「で」docker imageをビルドする。

Last updated at Posted at 2023-07-10

小ネタです。

ビルド環境を配布したいときや、CI/CDでmavenを使うことってありますよね!
そんなとき便利なのがmaven - Official Imageです。
ただ、ちょっと困るのがdocker imageをmavenで作成したいとき…
そんな時はdood (Docker outside of Docker)を使ってdocker imageをビルドすることができます!

例えば、下記のような書き方が出来ます。

これができる理由として

  • doodはsockをマウントして、docker-cliをインストールするだけで使えること
  • docker runでヒアドキュメントが使えること(-iオプションだけついていることが肝)

などがあげられます。

Dokerfileでもcommitでもdockerを入れて固めておくと便利です。

今回は、fabric8io/docker-maven-pluginrun-javaをビルドしてみます。
とりあえず動けばというノリです

$ docker run -i --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e DEBIAN_FRONTEND=noninteractive \
    maven:3.8.6-openjdk-8 bash << EOC
su
apt-get update
apt install -y apt-transport-https ca-certificates curl gnupg 
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bullseye stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null'
apt update
apt install -y docker-ce-cli

# todo maven build
# .e.g.
# maven clean install ...

mvn -version
docker ps 
docker images

git clone https://github.com/fabric8io/docker-maven-plugin.git
cd /docker-maven-plugin/samples/run-java

mvn package docker:build
docker images 

EOC

...etc....
[INFO] DOCKER> [samples/dmp-sample-run-java:latest]: Created docker-build.tar in 60 milliseconds
[INFO] DOCKER> [samples/dmp-sample-run-java:latest]: Built image sha256:5f2ee
[INFO] DOCKER> samples/dmp-sample-run-java:latest: Removed dangling image sha256:33ee9
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  50.960 s
[INFO] Finished at: 2023-07-11T12:39:42Z
[INFO] ------------------------------------------------------------------------
REPOSITORY                    TAG                     IMAGE ID       CREATED                  SIZE
samples/dmp-sample-run-java   latest                  5f2ee4b8470a   Less than a second ago   479MB
...etc...

$ docker run -it --rm samples/dmp-sample-run-java
exec java -XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfMemoryError -cp .:/opt/* HelloWorld
Hello world !
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?