Open LibertyをDockerで使ってみる

タイトルの通り、dockerを使ってopen libertyを動かしてみます。以下の人向けです。

- Open Libertyって聞いたことあるけど、触ったことない人
- できるだけ面倒な準備なしでlibertyを動かしてみたい人

# Open Libertyってなに？
- 高速で効率的なクラウドネイティブJavaマイクロサービスを構築するための軽量なオープンフレームワークです。
- 要するにJava製のアプリケーションサーバーです。


# 前提知識
- Docker
- Linuxコマンド
- 基礎的なWebアプリケーションの知識

# 環境
- Windows11 + WSL2(Ubuntu 20.04.5)
- Dockerインストール済み
- ブラウザはEdge

# 動かしてみよう

以下コマンド一発でとりあえず動きます。ちょっと試すにはDockerは便利ですね。

```shell
# docker run コマンド
docker run -p 9080:9080 -v ~/Sample1.war:/config/dropins/Sample1.war open-liberty:full

Launching defaultServer (Open Liberty 23.0.0.2/wlp-1.0.74.cl230220230222-1257) on Eclipse OpenJ9 VM, version 1.8.0_362-b09 (en_US)
[AUDIT   ] CWWKE0001I: The server defaultServer has been launched.
[AUDIT   ] CWWKG0093A: Processing configuration drop-ins resource: /opt/ol/wlp/usr/servers/defaultServer/configDropins/defaults/keystore.xml
[AUDIT   ] CWWKG0093A: Processing configuration drop-ins resource: /opt/ol/wlp/usr/servers/defaultServer/configDropins/defaults/open-default-port.xml
[WARNING ] CWWKS3103W: There are no users defined for the BasicRegistry configuration of ID com.ibm.ws.security.registry.basic.config[basic].
[AUDIT   ] CWWKZ0058I: Monitoring dropins for applications.
[AUDIT   ] CWWKS4104A: LTPA keys created in 0.319 seconds. LTPA key file: /opt/ol/wlp/output/defaultServer/resources/security/ltpa.keys
[AUDIT   ] CWPKI0803A: SSL certificate created in 0.658 seconds. SSL key file: /opt/ol/wlp/output/defaultServer/resources/security/key.p12
[AUDIT   ] CWWKI0001I: The CORBA name server is now available at corbaloc:iiop:localhost:2809/NameService.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://a9dad3b3af5b:9080/Sample1/
[AUDIT   ] CWWKZ0001I: Application Sample1 started in 0.781 seconds.
[AUDIT   ] CWWKF0012I: The server installed the following features: [appClientSupport-1.0, appSecurity-2.0, appSecurity-3.0, batch-1.0, beanValidation-2.0, cdi-2.0, concurrent-1.0, distributedMap-1.0, ejb-3.2, ejbHome-3.2, ejbLite-3.2, ejbPersistentTimer-3.2, ejbRemote-3.2, el-3.0, j2eeManagement-1.1, jacc-1.5, jaspic-1.1, javaMail-1.6, javaee-8.0, jaxb-2.2, jaxrs-2.1, jaxrsClient-2.1, jaxws-2.2, jca-1.7, jcaInboundSecurity-1.0, jdbc-4.2, jms-2.0, jndi-1.0, jpa-2.2, jpaContainer-2.2, jsf-2.3, jsonb-1.0, jsonp-1.1, jsp-2.3, managedBeans-1.0, mdb-3.2, servlet-4.0, ssl-1.0, wasJmsClient-2.0, wasJmsSecurity-1.0, wasJmsServer-1.0, webProfile-8.0, websocket-1.1].
[AUDIT   ] CWWKF0011I: The defaultServer server is ready to run a smarter planet. The defaultServer server started in 3.713 seconds.

```
コンテナが動いていることを確認
```
docker container ls
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS                                                 NAMES
a9dad3b3af5b   open-liberty:full   "/opt/ol/helpers/run…"   47 seconds ago   Up 46 seconds   0.0.0.0:9080->9080/tcp, :::9080->9080/tcp, 9443/tcp   vigorous_lalande
```

ブラウザで`http://localhost:9080/`にアクセス。トップページが表示されました！簡単ですね。
![liberty_top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327995/e899f979-87ea-7fb1-4664-3d1061c935ad.png)


# トップページ以外も表示してみよう

以下ファイルを`~/Sample1.war`に配置します。

```jsp:index.jsp
<html>
<head><title>test page</title></head>
<body>It is <%= new java.util.Date() %> now!!!</body>
</html>
```

`http://localhost:9080/Sample1/`にアクセス。時刻が表示される簡単なページを表示できました！

![liberty-time.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327995/780251bd-ed10-43ee-b583-ad89ad7d4ca1.png)

# まとめ
dockerを使うとopen libertyをかなーり気楽に試すことができます。みなさんもぜひやってみてください！

# 参考文献
- 公式ドキュメント：https://openliberty.io/
- Dockerイメージ：https://hub.docker.com/_/open-liberty