0
1

More than 5 years have passed since last update.

自分のベースイメージを使ってコンテナ~EHW2018「MVPをコンテナ化②」

Last updated at Posted at 2018-12-06

概要

このエントリは、「Enterprise "hello, world" 2018 Advent Calendar 2018」の12/6向けのものです。このAdvent Calendarでは、複数個のエントリにまたがる話の流れも鑑みつつ、なるべく1エントリで1つのトピックをカバーできるようにする予定です。

このエントリで記載するトピックは、自分のアプリをDockerコンテナ化することです。

前提

おことわり

想定読者

「Enterprise "hello, world" 2018」的なネタとしては、下記のような状況を想定しています。

前日に自分で作ったベースイメージを使って、Day4で作ったJavaのHelloWorldを動かせるようにする

Dockerコンテナ化

Dockerfile

自分で作ったベースイメージ(debian-stretch:latest)に対して、OpenJDKをダウンロードしてきて展開し、第4日目で作ったHelloWorldのクラスファイルを追加しています。

アプリの起動は、シェルスクリプトを作成し、Entrypointとしてセットしています。

FROM debian-stretch:latest
LABEL maintainer="YOUR ADDRESS HERE"

# shuld do apt-get update in base image
RUN mkdir /usr/local/openjdk
RUN wget --no-check-certificate https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz
RUN tar zxvf openjdk-11.0.1_linux-x64_bin.tar.gz -C /usr/local/openjdk
RUN rm openjdk-11.0.1_linux-x64_bin.tar.gz

RUN mkdir /opt/ehw
COPY HelloWorld.class /opt/ehw
COPY ./docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

docker-entrypoint.sh

#!/bin/sh
cd /opt/ehw
/usr/local/openjdk/jdk-11.0.1/bin/java HelloWorld

HelloWorld.class

Advent Calendar 第4日目で作ったものを使います

Makefile

create-image:
        sudo docker build . -t vanilla-hw
``

## コンテナをビルド

$ make
```

実行

作ったイメージでコンテナを起動してみます。

$ sudo docker run vanilla-hw
hello, world

無事動作しました。

まとめ

このエントリでは、「Enterprise "hello, world" 2018 Advent Calendar 2018」(EHW2018)の6日目として、

自分のベースイメージを使い自分のアプリをコンテナ化することをトピックとして取り上げました。

EHW2018のネタとしては、このあと、このプログラムと同じような目的を持つものを現代的なツール群を用いて、なるべくめんどくさく実現していくことを考えています。

0
1
1

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
1