Docker containerでClojureのWAFであるLuminusを動かしてみる
事前準備
- boot2dockerのinstall
- leiningenのinstall
プロジェクト生成と実行
$ lein new luminus hello-world
$ cd hello-world/
$ lein run
Retrieving org/clojure/clojure/1.7.0-RC2/clojure-1.7.0-RC2.pom from central
Retrieving org/clojure/clojure/1.7.0-RC2/clojure-1.7.0-RC2.jar from central
2015-6-26 13:02:18 +0900 SPC-072.local INFO [hello-world.handler] -
-=[ hello-world started successfullyusing the development profile]=-
2015-06-26 13:02:18.357:INFO:oejs.Server:jetty-7.6.13.v20130916
2015-06-26 13:02:18.439:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:3000
ブラウザで開く
$ open http://localhost:3000
Dockerfile
方針
- imageはdocker hubのjava8を使う
- containerにuberjarを含める
leiningen run
だとcontainer起動後から接続可能になるまで時間がかかる- Elastic Beanstalkだと結構致命的
CMD
はexec form
じゃなくshell form
で書くsh
経由で立ち上がるので、ENV
でセットした環境変数が受け取れるCMD
ならdocker run
時に簡単に書き換えられる
Dockerfile
FROM java:8
ENV TZ JST-9
ENV JVM_OPTS -server -Xms512m -Xmx512m -Xmn256m
RUN mkdir -p /home/app
COPY ./target/hello-worldjar /home/app/
EXPOSE 3000
WORKDIR /home/app
CMD /usr/bin/java $JVM_OPTS -jar hello-world.jar 3000
詳しくはDockerfile referenceを参照。
containerの作成と立ち上げ
uberjar作成
$ lein uberjar
Compiling hello-world.core
Compiling hello-world.handler
Compiling hello-world.layout
Compiling hello-world.middleware
Compiling hello-world.routes.home
Compiling hello-world.session
Created /path/to/project/hello-world/target/hello-world-0.1.0-SNAPSHOT.jar
Created /path/to/project/hello-world/target/hello-world.jar
container作成
$ docker build -t luminus/hello-world .
Sending build context to Docker daemon 56.42 MB
Sending build context to Docker daemon
Step 0 : FROM java:8
---> 433801eb0894
Step 1 : ENV TZ JST-9
---> Running in ac5801626c85
---> 77b3c91b3d78
Removing intermediate container ac5801626c85
Step 2 : ENV JVM_OPTS -server -Xms512m -Xmx512m -Xmn256m
---> Running in 5c6a50907c9d
---> 9db9e3ecf034
Removing intermediate container 5c6a50907c9d
Step 3 : RUN mkdir -p /home/app
---> Running in 4e0e9d8c0b15
---> 9af2a4c10750
Removing intermediate container 4e0e9d8c0b15
Step 4 : COPY ./target/hello-world.jar /home/app/
---> 4e89615ff644
Removing intermediate container 88d653f5d04f
Step 5 : EXPOSE 3000
---> Running in 383fc9ad8ee1
---> 0ecb672ec459
Removing intermediate container 383fc9ad8ee1
Step 6 : WORKDIR /home/app
---> Running in eb575c33ce63
---> 158e8dbc87eb
Removing intermediate container eb575c33ce63
Step 7 : CMD /usr/bin/java $JVM_OPTS -jar hello-world.jar 3000
---> Running in 344eac7db8b2
---> 132b7b08093a
Removing intermediate container 344eac7db8b2
Successfully built 132b7b08093a
docker run
$ docker run --rm -it -p 3000:3000 luminus/hello-world
2015-Jun-26 13:47:52 +0900 9ae20b5deccf INFO [hello-world.handler] -
-=[ hello-world started successfully]=-
2015-06-26 13:47:52.424:INFO:oejs.Server:jetty-7.x.y-SNAPSHOT
2015-06-26 13:47:52.513:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:3000
-p
オプションでcontainer側のTCP/3000をhost側(localhostじゃない)のTCP/3000にマッピングしているので、
boot2docker
コマンドでhost側のIPを調べて接続する
$ open http://$(boot2docker ip):3000
TODO
そのうち以下について書く
- Docker Compose
- Docker + ElasticBeanstalk
đồng tâm
返信削除game mu
cho thuê nhà trọ
cho thuê phòng trọ
nhac san cuc manh
số điện thoại tư vấn pháp luật miễn phí
văn phòng luật
tổng đài tư vấn pháp luật
dịch vụ thành lập công ty trọn gói
Tuy vậy, cỗ chân khí mạnh mẽ này cũng đã phá tan nút thắt, mở ra một con đường mới trong kinh mạch, từng chút một tiến về phía trước. Sở Dương cẩn thận vận công, khống chế chân khí chậm rãi luân chuyển trong tuyến kinh mạch vừa mới khai phá. Phải hành động thật cẩn thận ở lần vận công đầu tiên sau khi đột phá. Nếu không, có khả năng kinh mạch sẽ bị thương tổn, loại thương tổn này nhỏ bé đến mức hầu như không thể cảm nhận được, thế nhưng nó lại hạn chế thành tựu trong tương lại của người đó.
Giống như đang đi trên một cây cầu độc mộc, Sở Dương thận trọng khống chế chân khí vận chuyển một vòng tuần hoàn trong kinh mạch, lúc bấy giờ thân mình Sở Dương đã đầy mồ hôi thế nhưng hắn vẫn không thư giãn mà tiếp tục vận công.
Một vòng, hai vòng. . . Chín vòng!
Vận công xong, Sở Dương thở mạnh ra một hơi. Hắn chỉ cảm thấy dường như cả người không có một chút sức lực nào,nhưng rồi lại cảm thấy thoải mái giống như được ngâm mình trong bồn nước nóng.
Giữa màn đêm đen tối, vậy mà hơi thở của hắn lại mơ hồ ánh lên vẻ đen bóng, sau đó mới phiêu tán trong không khí.