読者です 読者をやめる 読者になる 読者になる

そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

Docker上でのJBossの構築 on OSX

これまでOSX(Yosemite 10.10.1)で下記の実験を行いました。

Mac OSXでDocker(インストール編) - そごうソフトウェア研究所

DockerでコンテナにJavaを入れるまで - そごうソフトウェア研究所

今回はJBossを入れて動かすところまでやっていきたいと思います。

Dockerfile

# Dockerfile
FROM centos:6

MAINTAINER Ryohei Sogo

# install package
RUN yum update -y

RUN yum install -y java-1.7.0-openjdk
RUN yum install -y java-1.7.0-openjdk-devel
RUN yum install -y wget
RUN yum install -y tar

# JBoss
ADD ./files/jboss-as-7.1.1.Final.tar.gz /opt
# なぜかADDしただけで解凍されている
# RUN tar -zxf /var/tmp/jboss-as-7.1.1.Final.tar.gz -C /opt
ADD ./files/standalone.xml /opt/jboss-as-7.1.1.Final/standalone/configuration/

# Create user
RUN useradd jboss
RUN chown -R jboss /opt/jboss-as-7.1.1.Final

# JBoss
EXPOSE 9080

Dockerfileの内容としては、次のような感じです。

  1. 事前にダウンロードしておいたjboss-as-7.1.1をADDでイメージに追加する
  2. 設定ファイルを変更する必要があるので、standalone.xmlもADDでイメージに追加する
  3. JBoss実行用のjbossユーザーを作成し、jboss-as-7.1.1の所有者をjbossユーザーに変える
  4. 9080ポートをEXPOSEで公開(standalone.xmlの中で9080ポートを使用するように指定している)

standalone.xmlも晒しておきます。 standalone.xml

なんでか、ADDしただけでtar.gzファイルが解凍されてて、確認しないといけないです。 ADD ./files/jboss-as-7.1.1.Final.tar.gz /opt

コンテナの起動

コンテナを起動します

あとでデーモンモードで起動させるようにするけど、取りあえず今は'-t -i'オプションを指定して、インタラクティブモードでコンテナを起動します。

$ docker run -t -i -P rsogo/apppot_runtime /bin/bash
[root@fbf427c7d0a4 /]# 

コンテナにはいれましたので、jbossユーザーになって、JBossを起動させます。

[root@fbf427c7d0a4 /]# su jboss
[jboss@fbf427c7d0a4 /]$ /opt/jboss-as-7.1.1.Final/bin/standalone.sh 
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss-as-7.1.1.Final

  JAVA: java

  JAVA_OPTS:  -server -XX:+UseCompressedOops -XX:+TieredCompilation -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml

=========================================================================

ホスト側でコンテナの状況を確認します。

起動していますね。コンテナでEXPOSEした9080ポートがホスト側の49158ポートに割り当てられていることも確認できます。

$ docker  ps
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS                                                                     NAMES
fbf427c7d0a4        rsogo/apppot_runtime:latest   "/bin/bash"         42 seconds ago      Up 40 seconds       0.0.0.0:49155->9080/tcp   pensive_lovelace  

確認

アドレスの確認

$ boot2docker ip
192.168.59.103

実際にアクセスします。 URLはboot2docker ipで確認したIPアドレスと、docker psで確認した際に9080がマッピングされているポートです。 今回の例だとhttp://192.168.59.103:49155です。

f:id:begirama:20150128100335p:plain

OKですね。