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の内容としては、次のような感じです。
- 事前にダウンロードしておいたjboss-as-7.1.1をADDでイメージに追加する
- 設定ファイルを変更する必要があるので、standalone.xmlもADDでイメージに追加する
- JBoss実行用のjbossユーザーを作成し、jboss-as-7.1.1の所有者をjbossユーザーに変える
- 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
です。
OKですね。