From 8357f933f99a6c90d89bc079750ae0ab67ef76ae Mon Sep 17 00:00:00 2001 From: Alasdair Nottingham Date: Mon, 4 Dec 2017 16:02:27 -0500 Subject: [PATCH 1/2] Documentation for Open Liberty image --- open-liberty/README-short.txt | 1 + open-liberty/content.md | 148 ++++++++++++++++++++++++++++++++++ open-liberty/get-help.md | 1 + open-liberty/github-repo | 1 + open-liberty/license.md | 1 + open-liberty/logo.png | Bin 0 -> 33943 bytes open-liberty/maintainer.md | 1 + 7 files changed, 153 insertions(+) create mode 100644 open-liberty/README-short.txt create mode 100644 open-liberty/content.md create mode 100644 open-liberty/get-help.md create mode 100644 open-liberty/github-repo create mode 100644 open-liberty/license.md create mode 100644 open-liberty/logo.png create mode 100644 open-liberty/maintainer.md diff --git a/open-liberty/README-short.txt b/open-liberty/README-short.txt new file mode 100644 index 000000000..ca1d1146f --- /dev/null +++ b/open-liberty/README-short.txt @@ -0,0 +1 @@ +Official Open Liberty image. diff --git a/open-liberty/content.md b/open-liberty/content.md new file mode 100644 index 000000000..936d734cf --- /dev/null +++ b/open-liberty/content.md @@ -0,0 +1,148 @@ +# Overview + +The images in this repository contain Open Liberty. For more information about Open Liberty, see the [Open Liberty Website](https://openliberty.io/) site. + +# Images + +There are multiple images available in this repository. + +The `kernel` image contains the Liberty kernel and can be used as the basis for custom built images that contain only the features required for a specific application. For example, the following Dockerfile starts with this image, copies in the `server.xml` that lists the features required by the application. + +```dockerfile +FROM %%IMAGE%%:kernel +COPY server.xml /config/ +``` + +The `microProfile1` image contains the features required to implement Eclipse MicroProfile 1.2. The `webProfile7` image contains the features required for Java EE7 Web Profile compliance. The `javaee7` image adds the features required for Java EE7 Full Platform compliance. The `javaee7` image is also tagged with `latest`. + +There are also additional images for different JVM combinations. Currently there are tags for java8 only, but there are two variants one based on IBM Java and Ubuntu and the other based on the IBM small footprint Java which is based on alpine linux. The naming structure for the variants is tag-javaversion-vandor/variant. This leads to webProfile7-java8-ibmsfj as one. At this time the full list of images are: + + kernel + kernel-java8-ibm + kernel-java8-ibmsfj + microProfile1 + microProfile1-java8-ibm + microProfile1-java8-ibmsfj + webProfile7 + webProfile7-java8-ibm + webProfile7-java8-ibmsfj + javaee7 + javaee7-java8-ibm + javaee7-java8-ibmsfj + +# Usage + +The images are designed to support a number of different usage patterns. The following examples assume that [DefaultServletEngine.zip](https://github.com/WASdev/sample.servlet/releases/download/V1/DefaultServletEngine.zip) has been extracted to `/tmp`. + +1. Each image contains a default server configuration that specifies the corresponding features and exposes ports 9080 and 9443 for HTTP and HTTPS respectively. A .WAR file can therefore be mounted in the `dropins` directory of this server and run. The following example starts a container in the background running a .WAR file from the host file system with the HTTP and HTTPS ports mapped to 80 and 443 respectively. + + ```console + $ docker run -d -p 80:9080 -p 443:9443 \ + -v /tmp/DefaultServletEngine/dropins/Sample1.war:/config/dropins/Sample1.war \ + %%IMAGE%%:webProfile7 + ``` + + When the server is started, you can browse to http://localhost/Sample1/SimpleServlet on the Docker host. + +2. For greater flexibility over configuration, it is possible to mount an entire server configuration directory from the host and then specify the server name as a parameter to the run command. Note: This particular example server configuration provides only HTTP access. + + ```console + $ docker run -d -p 80:9080 \ + -v /tmp/DefaultServletEngine:/config \ + %%IMAGE%%:webProfile7 + ``` + +3. You can also build an application layer on top of this image by using either the default server configuration or a new server configuration. In this example, we have copied the `Sample1.war` from `/tmp/DefaultServletEngine/dropins` to the same directory as the following Dockerfile. + + ```dockerfile + FROM %%IMAGE%%:webProfile7 + ADD Sample1.war /config/dropins/ + ``` + + This can then be built and run as follows: + + ```console + $ docker build -t app . + $ docker run -d -p 80:9080 -p 443:9443 app + ``` + +4. You can mount a data volume container that contains the application and the server configuration on to the image. This has the benefit that it has no dependency on files from the host but still allows the application container to be easily re-mounted on a newer version of the application server image. This example assumes that you have copied the `/tmp/DefaultServletEngine` directory in to the same directory as the Dockerfile. + + Build and run the data volume container: + + ```dockerfile + FROM %%IMAGE%%:webProfile7 + ADD DefaultServletEngine /config + ``` + + ```console + $ docker build -t app-image . + $ docker run -d -v /config \ + --name app app-image true + ``` + + Run the Open Liberty image with the volumes from the data volume container mounted: + + ```console + $ docker run -d -p 80:9080 \ + --volumes-from app %%IMAGE%%:webProfile7 + ``` + +# Providing your own keystore/truststore + +When an `open-liberty` image starts, it can generate a Liberty server XML snippet in `/config/configDropins/defaults/keystore.xml` that specifies a `keyStore` stanza with a generated password. This causes Open Liberty to generate a default keystore and truststore with a self-signed certificate when it starts. The `javaee7` image does this automatically, but other images can request this by setting: + +```console +ENV KEYSTORE_REQUIRED "true" +``` + +When providing your own keystore/truststore, this default behavior can be disabled by adding: + +```console +ENV KEYSTORE_REQUIRED "false" +``` + +It is good practice to place the keystore customization in `/config/configDropins/defaults/keystore.xml` even when not generated since this makes it easier to find and makes moving to the websphere-liberty docker image simpler. + +# Using IBM JRE Class data sharing + +The IBM JRE provides a feature [Class data sharing](http://www-01.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/understanding/shared_classes.html) which offers transparent and dynamic sharing of data between multiple Java Virtual Machines running on the same host by using shared memory backed by a file. When running the Liberty Docker image, it looks for the file at `/opt/ol/wlp//output/.classCache`. To benefit from Class data sharing, this location needs to be shared between containers either through the host or a data volume container. + +Taking the application image from example 3 above, containers can share the host file location (containing the shared cache) `/tmp/open-liberty/classCache` as follows: + +```console +docker run -d -p 80:9080 -p 443:9443 \ + -v /tmp/open-liberty/classCache:/opt/ol/wlp//output/.classCache app +``` + +Or, create a named data volume container that exposes a volume at the location of the shared file: + +```console +docker run -e LICENSE=accept -v /opt/ol/wlp//output/.classCache \ + --name classcache %%IMAGE%% true +``` + +Then, run the Open Liberty image with the volumes from the data volume container classcache mounted as follows: + +```console +docker run -d -p 80:9080 -p 443:9443 --volumes-from classcache app +``` + +# Running Open Liberty in read-only mode + +Liberty writes to two different directories when running: `/opt/ol/wlp//output` and `/logs`. In order to run the Liberty image in read-only mode these may be mounted as temporary file systems. If using the provided image, the keystore will be generated on initial start up in the server configuration. This means that the server configuration directory either needs to be read-write or the keystore will need to be built into the image. In the example command `/config` is mounted as a read-write volume. + +```console +docker run -d -p 80:9080 -p 443:9443 \ + --tmpfs /opt/ol/wlp//output --tmpfs /logs -v /config --read-only \ + %%IMAGE%%:javaee7 +``` + +# Relationship between Open Liberty and WebSphere Liberty + +WebSphere Liberty is a commercial distribution of Open Liberty. There is an official docker image for websphere-liberty. The websphere-liberty docker image predates the open-liberty one, so to make it simpler to move from open-liberty to websphere-liberty (or vice versa) the images are broadly compatible. It should be possible to move from one to the other with a simple FROM clause change. Some considerations for moving between them: + + Open Liberty installs into `/opt/ol` rather than `/opt/ibm`. + Use the `/config` folder for accessing the server configuration. + Use the `/output` folder for accessing the server output. + When adding your own SSL configuration use the `/config/configDropins/defaults/keystore.xml`. diff --git a/open-liberty/get-help.md b/open-liberty/get-help.md new file mode 100644 index 000000000..520f8d135 --- /dev/null +++ b/open-liberty/get-help.md @@ -0,0 +1 @@ +[the Open Liberty community](https://www.openliberty.io/community/) diff --git a/open-liberty/github-repo b/open-liberty/github-repo new file mode 100644 index 000000000..01bc63b2e --- /dev/null +++ b/open-liberty/github-repo @@ -0,0 +1 @@ +https://github.com/OpenLiberty/ci.docker diff --git a/open-liberty/license.md b/open-liberty/license.md new file mode 100644 index 000000000..fae0a1562 --- /dev/null +++ b/open-liberty/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/OpenLiberty/open-liberty/blob/master/LICENSE) for the software contained in this image. diff --git a/open-liberty/logo.png b/open-liberty/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..68baa631d647f6ab9f7789e73e3be7e2852d4cc9 GIT binary patch literal 33943 zcmX_n1ymeO)9x9|G2f3hOpSu2hncK`;p7LiU9*1IPSE zq{*_L{~Z!*?y+FScl1dx?QSV#VmYaSb3#5ihl`V%)A|h-9Vfl`Pbv&&t7t3# z2y0EfnzV;r{`qigD$Vx?7v3%5U+%s>q*LbXc(#U-g;E5^_{!T(LKVUo;9tPr-TTpt z{L#DfIQUtP8#XuDD=a1jTyeKBfhMx6iaLmyTF*r=iiBMS6L6WZVw@0D;Gs_8*Jq^u zM1RWt##RPiy<-U8D6oM23zOMz#KUbriuro6Q(;Ln;HyIweuNkZX&Tso{(fao(Q0@f z5)54UF(I9Zy;GolunP6qpgXaca2LnFw%Ui1~M0740n3Pym;a z3{5f<*^GD*30`jdpfFTsLagWiW{N=V)dEGxEbpI5m4Nn{Og~dbLA}015oki8AZ7!n z_@i_9l%q)>>;EW&cE}@&MxG^foigH?sw8+N380Cd8@dWt3>l(a8#sgJ-12YMP-2`E zh*4n@_ztPO|D*oD2{9!(@{rP&XCad${z6GK4FmH3_<_`?zGpr%_H#a-g=Ql-Pu)bSW%iD5Q{C~5vG-l3JG82|l#0Wg&@it7KED*Fi0L0xU36J8ty5dyzt_?7p9GBL+W zSxzc`%0&qMxAeGf_I_;CDJ54FMhFftoL)Z!1q6HpOjjNB6-t_q{>LHmBssAU7^fwm zB4*RiAG!470GUS_DVoasCjcntI-2gi%XfL`RXAg4ea3qFoY@msjf#5={I8@d6&X_} z#i2#VBZ>YQtVHRnnx_+%r;eigAEj1suqO+ld>Vuw(w*FSCI7#gG5PC$CUO$B3GX!i z>c;m!-WqYz5yWilI`O<;W7qibKfMdwJkuP?uSe{6kbVg6MDLRQ-za1C*F9^F%I;9? zfTF!#z^<{AWsaD96I5QKy7o}My7o^Rz*gZ(chzC7k8cY2zcth0Dp$sQ`ai{y+SoV# zPYVFu`bP`q|NrAh6_*v%>)5iY#WTVtAOi?ODMF=k>pVz_3j{#`WovA?@Gl0P>$g_n zv^IRwB15ILd|GXPTe?Uoh0_0Tf>5o`PyEceARYQpw!Xv~jGV@1qbZog7PZo4D3G-S z#OCZ_`MkrImyZ-#DGtHt)~qYIOtyfR!2zNtZtTD>OtBbd&qME9i-oQ)j}uGGR-Ld+B^gB}bpxNEb-#OQ50Twu#| z7wVRE$bBxiyha`=UEBc3`x8ABor?d^@^nwYkyD*bIh-Oh{DuW4-6^c*80!R$r%XB>pNE9w1w8!n*KJI3fX^uXDE(&_ z^TpuFfwg+F5%l3DP%?-s&%q!;!4!YB_|&6kT~*$ml*E^-wG6%W*sm0~ntn^Px&H*K z6w3P8cCjp3h+nEdd!Mr=9jk&Hqnp7#Mll77+)c=1YjyDwV3O;3crbYqehfiO&ZB#c z16vuiVlpJCP!(K2-n`4-_?w`5N zeCTAcr|LxW1L&q*{VM4~VV}hl$oUIjc7(E$Xa`@dBY6_JX2*;cYtV)t6~B(YLT$yN z%bOgUz%0I>tJ4UX>`Ks%L}?I&9e+nk#z*WZn}#QQX0mBeA*S!}a|hRIHKU|Mq4NXm zwi=1~|8bcpX-0!ND0!Sp*h;_lr`#3db8B&ef`OHMI~EQi=KN#N(hNu`jaVJgI$9os z``m{)H1Epga1zQW0%20@kEv}TG1e!77|I@xm>3*WK+lb2Ol8nsuDC(20v7lV2t$xzsN*pFGUv( zMhH=a{I_8K`kB0dN#SCO05tt#qDexmRWDPB3TmNjmDedlE|Qr($^y?=?^4i%VM79z z*N+&RrBgR(h(K^54tW%NLKm>)p_dcO?<%_6x%z-2ysFj^M5v7Tj3{oaa;+(*{%HX; z`6s(5_4~##R`wEogV%N$>trZ}1-R0pIeH+PNd0=iu;Ish7Ql6}Q*lyplJ$BiCfvwj z#gw}f;XQ~I@YbHz2jM77Cvh51O!}Smuv(C3qhVNr1u3+qdY*$uusEZYXqq?7I;Jq>#aBN-jbKj zv>^ZDG$AK=!99ff+hlQ-(4$&hhd)aNEJlj{0~(U56=L~2xAlCDlSEmW1C#=z;4n2s zQ#zDM4D?%8q>!Rr6@8sYD6Ib40I0{KAfA{IR&9)1?G5 z=ZMuf#w&d!Qoe&W<0`r@an^M^e4Q~rF zbbPYmNw)D_nSHF?X69S3u!6-&{Z7BT%mpPIQLO0b&#ilaH>b9+fUK0(V~eGTqTHOu z%4m42`g>JJX@VP-rS7OOyAuUZ+^TR}=Zg5r@#IYKAk(ieo&0;Lv-k@ZOdgq*HMRQ3 zxnXy|_8tq47kS0F&a>@um6e7&MrM$nF<(B$bGhf2seNYV)Wxtj5rJ}IQV#eNP_sh` z2=sJP#(vfJbZsn*xh!$R(M8gw#@;JX?V$Fym@-&JdVT$f-RpOS@Qg=eYDE)oEtyTR z7KCA~3h#>4u)Ezs3f0_npKzjSZh+`#2{2!~#<3WH?WabP@55U6xd&YJxDihc-4#gb z@Y&`ywj%GF;aujC^B!Fw%aAJcKgTIh&byI}(|nq*gKak7|FS zb-EC^0d71R&$&EbqY&zEmBkfq`ZvngecBMMLmXkSjfa-qovGqM|EcWVd8FSuc^%>BroSg$pXekuPwoI!f&mPcsEgtySt;O(t(=40+ zq2f_vl*&RT!9PfuRKu9(`lHB)@dN`}oHxRBymYhMW48<91F$9viJmM+QfDTDknMk) z6Zv(7A$qszTDj-UbgMP7e!Kk5ApahGQcF3{CTU$^Ne)=JO*4xvh)&0JCZ7s9{FWBa zzs<=+@a7Wweu`>8JV_QdiqgKqM4?#XM!UQ2?0cLLyP?4aO@bV{&;-c*jWDo$*KJLP zq91av>W$4P%aVpYIAF;2?5IkSN{GF7|{lGu-V`9t1n1~bvO-+Agm>C~rGGOtc!Z@DdZ8YPSF=VNj9#a+cb&Kx{ zkcecPj1BEz;O2=SRD`B9YT-Pd%Gw_uGmlOW_`rXhBaCZD0ugQhdy>MNO(A^;Ve=0uf0<$y(uA@)Up^b9{LzM1bv zY>_c1ticjfA8JW25v%H%@bseP$^1`<>45qEG&+By?vO1FnHdGUA8C7_?xw6kak% z4sKa$90x_73VI;G34SBNl<0HrfkqTdr0?1z%5&mx+S(h#Pv*1K4*5h+5~p1+g$)Q8 zQz?5r2tONPzWL}t2Rcb6xuYdX90-p>g6S})DiDJyu%k&I-KletI1*hcj1*tp0);G> zK+70Nt?Bj0whqXrKbfD9*4`*eNntaiA}!xw^04M9it(_KeHI!V92VDXATL=+7nnm@ zXg8qpbGQPG9v{~hnqLh97?yLVPSS@_5|UK32OoyRl({3@knD|kWs;4cLM{2{I2)*=O&D3 z#3EXT9K_b9|1q>NS^3VgT0avOR7}g&rJi*4hyp6bQq6L5H>S?z2K2X_P^wOljE;+tmZX{ugWGWe_QQ!>VWiNE3hEM zmHE>a-;*C|R`|k;h>H(8AoCKL$jYn&&glcY_1%K)?>v8^Uip0%N$zW+d)D zoX~x+p4W(oa9M)d2+gxX5oJkSC{rsQ-y%hRgmQeFYls@LDujp9|C$uZ8mIvo*EmE6 z@yiTu0hJ0M_Mlqp&Yq^CA1Nura0EeGrLry!i%%9c3_e5Uvf#s*Hoe3y2Ttv9K*59Q z#<+m|W<*1_A17M$fqC@Pv<`BTpAi>J*AD5*K#~2aIRDC#^G%UTQ70nLnM&e~gn(vu zY~?G#QiwU}K-L-zPV%cVH|7?3xt;zw{K>1?TGXmbn9u!M0R*}JXvS_q3I<(XI(Myo z6T^TBrXWLTT|k5afguP8eq_1{<*a?IV(;AHKnBy7{Cxv`-6*AKoX9&_RwHtBedz>0 zcFL50AxUFC`9U5(@D#_i&2PTg61q*kZaU2FYIRzzm{2;UrJFfhZpcSrrPKi9i#!GU z0Z$BT;$FLHPwZM>Zxl3C@zWI5oSR({)L(Nvb?+9SOxFqTJdD|O1T9EWaSab#_Dz!ASAzfMf)fTs5OIb0DiBDd1LUfUt#=m?#R6V`=UaB8E+7c`@ zoRFyzwBeu88jxf5@|_beGP|G-87+vD?N(lbs5*ca#-j{RT7UP-h7oH0XA{m-XAK=0 znU#zFapzXLO=^?f8+etr-cg?y;mw^Lab8RCz|LZD0CjO@3Z~ACW8&bEVzH_@dEl17 zU2)QT>esYbNvHyC)f8?C(!J`0!O>Ef82@aLG&I~zK&Qt<*tM` z*WIs@O&kRc;g5R$#)snm?A;ejOg}o|zq4g?6d=PPudru&t=0_h6x3Q@+*G~^sKRH~ zbH@us4o85FlFr7hD7oADDGSx)!L9wz#Z&Vb$t6(j9??BaGvKdlN&~O^0{f#AZgmK$ z3|$gb6|VA)T%=?^sJmO*buXZtj)Q!rp!DHvIZJ>>6ec@%$`4Yxbnk z{-P=vVo^nlpwF&1C;AeJI%M2cOFM*o{`4SR_YCIes;e~^^(8gj{%yp>z8F3=C=&F@ zzL7j-QNt5_*1z!!$_{_rYSszldY)^1A|)M`=X1G)Ag zIYl4!j$#ak3~ou7CBovdz90<;c?Zl%3*h4|1vt$J9Ro@VZ{o86p6omMa*bg4TB!*Q z<&n`X(G<_mb$HoHF9*NUQRKwCI@dTK93gm2y5I8<*&+Qf$FjM9$k|7vdCP#BZnN>ojtJP#6ye4MX zhx4{obf0JSp$X zG^yM2#Bef#TLZuAUN&QvUx z7S|(}H63}cW=gW1$n;+Cnv01=7b|IJ<%)jZL*B@)9(_kpR9xXj`V##zv#t%ErCs&A>LvhJKY^Nmu0qG zqKN6@h2_;XW(T|JqV<+qA;~Jst@4@psR(=T1<(T4OnB=-!1d9^)$*h*^Fq16h3$0K zzFnQOHd&{TS?X6Ak)s)F57ZM9Q-~r)dU)Aa#Bb6cX%PPQ{vC5f%BVelZ`sSP@!+xg zt)V5>HRSx_S{`M)LGL)|hc;5hhyKQB#caM=iR{koQmL`1pCeAOEqch^kmqE%JdNye3zlys7^Gk^v z$?EKM-y+ zUac{9RFAxC-o)EtF#hJM4!u50#Q8*(gh1CaN@hsMPh~2yx9v`?pY`05z&;O8wx8S% z&pI~Ry4u=aSnFMXIXAlekW+f9<+T9L++>~HEf<6ipxAbEwG`ER7_b!>=4Z@}`p^>|y3Htm7&D^lLm zC3YFh6VdXDGk(VL1g{ZMnWW=|>&)O9!MV?FH1zN36Nkbj$(w!|%ZRKiXYKb8|4IS022<==guleI=>frblz4z6K{>J8Z@es=B^CL}J zvT!jzFH0M=CDv~vqR4K?X~VNrCkKP&Fc-8ZWG1}P4(7&Y-BDP6IuGQN^s_-5F%?9+ z2Ho4;Nzya(1-%m8X9OF)D$d1%3#8o20d9jE%U7kM$c{tni)wA3EBUMeh={f2mTCZ( zu(LI4=Ef5`NMsH^NJzV8H!V)~=kMf_4>POD4wT1w7dX3SEFbosDqQ7pa7TYhy!@qp z+}l++TPtYm{d)?r-L`zGNm!fF) zg0C@IaImr}^z5(zH9^GSX`RngM1@(oi0it`?bO1{Tgfg--)fbIh=Qv;!4-_n)I+P1 zwli>v_L<^#*FT)&$dP@??t=wNCtm$C+79wZdMLvn|(3G#K%9B z+#qcY=6I5|YTz$fo`8*}xib3S>L)MSb6C}&XGaobgj0CbHoA8*P!4LJBz14^d|JLM z$P@XcPBd?Xw!|tJe&Qw&b9Tm^E_Vl|*m#Euk|E5*FNGZp97{iJ<;*@6oOF2Zh3hLg zV`dY@Nq5-Z(aGS+C!w#$FJ*M}#E<4QZzkB0Jmbh*cuo2)mA`5vuyO=OY5Lu{M&jAp ztFj6kkJCRkkNcu8XkCd4}K<5cJr-TteaQtF8M^8MaK-b=65x`g8m%ZYw!> ztd8MXVzybv#!Be9uk}~Vh&~rA>38+i)@z^x1d0QFrMItPP zf4LoB67}CYS9)AuD(@2bi!9Ev5a!_HJjM)Sc)3dSqQ7wNFPQZP)4WHW|}Fs?P2{o+1(&Szh@fI5-1RBw03 zcHFjyv-xENiJPts-T*!>33Y|cCm;u%UU|z@CjWcx#9PMKMoOx1fyFTa1;zPn)e|)| zMAr%tZnOAqXGPdIr{L2vnUHg>g~II{X|Wuojb-f&F(>LB->}*sTXT$|B~sKDw@i_T zsv1r*{IK)qH%rlthGAlLS3-mv<^3y9{#Cf+vs;ykY-?3(QU833OIA3#d z+!3|1?Caa1XP!^nkbHQAu!>7A2GOQoFZE~5GI}OobRV9P^s1NsF!>E<1I8Tm^#XZl z_zWZUb$clXfm>M=rE*K&@rYXhfg!D-P9<0F0+Hy8hu{w_aYa_xU(qHlmM9?aO3Ps#qxHOvL-8%+)|JAOhxd|svY z^xTeGrp}UT$URK5lZ#exC*rSrJ5A1c+_a|3W0VPGg`A#KJCqIv*PhbcT#n9`6tBfM zu0I`)h1=<5*wn$K(ZmPM!I zkv{1BWTgBraL;>DDW`*8`knpA@N8T{!2oB71TH>49x9+a_DVw*j!3R`mYeq%X0@)= z6^kdDcLb!|YAwf@?@ha$p{?=cT)j>tt=fx=L8n|0UhpN3Vs*bGDn7#Z38a^YQKN zL!E7}4~Z3|rVU-*Z1qGM)Z&k4aLoUQm~RRrPx;H;i%wY+tbXf*I^9spmiC*0BjmyK zCuRw$sNwLJ7caOi3~M+bYIKZlG@g;@;19)*`C$HDna-2`DfRl?4hVZ}wKb*X5dq_D zytAP#f!258dHPYG1NYIiDo`j!6?A@aafXNffWPTQsu#FG4d?W>Zg(?M5oJ}(Y^;JYQ!mvP(sefE{DgPl?O-Wk$o?(=FhIH$JSA7Qs^C$_y=IVW8r z>u75Pi1j0<{KuaHmelUJg(|LD$q^VD25Ydx!7z`Df(F3iIqBYu;pFZ+FhY`lEfbj4 z(d5;L5lTi+cDyg(wOC7;PABKDk*MPKy?)RALWM~W^bDdGpRdc?d>0oFGwVdZ?aMVk ztg*HjM+jT)!fhIZ>)pC_T@9AXGEZ(UyIoFu9-7#MR{dnD#Sp3vsSy}dhFVA)k~kYU zb26JZaTh%<>c+mUQU_-*G*QJB#+WtZg6rPy)_f4Z`@!9&_{cw(=D%B;hICNtrdjkFrIv5j_6oZK1PB}XHeEXw6g%BMUk;}o8qFZF2;+G=UzZ3(NuW#&*|&=Sn3Ck$W}m=WDk{&2)iQSGuXLv5M%mVS|; zF_Ov0fRaxFzXsr!*RTHSVEd$f%fYQ2Yn7KuGd=fU`mF?VU(m=i(Fv(1vV0JNIQ6H- zQmy#F1Kj1Xn!(m!E+-lnBO#dnA80D7o+J-ZPx`@j?oIv3#?E=xxmfU{tqG~tY>S8= zPu3VatIO^v85^Nlrvlq|@LLI+_$SeRI7Sz}Nat~{@ z2vXFKzClsgCwTf!T2=g&~br(D#IIx_Ks@eP2G^t<@e51zlVEB#6B^ zv_2A+t+WGbv@ZB-Er{CW2ufJ)0=NzQL+lDgIqW$9U1;s@_LKzV0Rj;u>%?J~L4eh4 z59?s{m(2rF(KQFm#atSBQg)VfRx}FTZyqfK@e&$Yai$;8a=eZOjaSrOpNr_e&<5FBVE2Hy1!?ISBq?U3B>@HptF-Lykl8UJUQ&_ zi?$p`sv;}2pBRU)Y+e6w%oiZ3`yvBB@1fnSo4w$nJ~(ibAKfhw|_7VKxWo;3~IaMBxYl4gdJNF&yYCy`vLd z-~(ykxXa1beWr()He?TFe&T{%aGq3`XjsFAEPL~P~>o^$N5 z&1Ug0W6A|EFA+YTC|-%gv1-v%$y`>Y_aXzbHk*-Q1{w#oX-4>wl{O3XhjnS^aND5` z+HB=tna8>LKR0MA_!a}z9iv}}?TkpvFDz-x!C&FNH25tB?|v(Y@70c>TFW8%7nL7;2YrH)f=?yfUlE z%T{Kcu%S(lZK{L%(5K>l$BzT2Cc_Gn?r0BDFT(R$O|(lioWghti%(cz9p_ry z8N`Qp#zSlt%r)H6d#|K4f3;>T^WW-<}T%u6qQfKk1aGcC_vq)H~7$|w6?*-Kt6ZU8ebNu4*EIxFgAp<#=?*E_9r zD~zAN!FBVx4f)RP@yy2?t1;eWLb`>hiUm z3)@fJOl?r+BtL<+L})w>NP+PYUllY0^z4^Fgg_Aer!!B7KXUqZ!vwWIT5{A9U^m)$ zQd9mf7|sTV!=&jphW=|gW9((lbgwF8u{3#Gs~G*y)iJ)BB6B9uT@^cwaad3(;@I%D z!aayhF-n?A;HVRX)|4yT>lR4Xn)nG|>Oo2nGSIqTXwmoH*F(|iy`w8H6eTV4 z2v{&C;uxoY@7sKNqQFVMKMmc6vkNK;Z%6DzZ3);+@8kfg69VbHR&P8Z%YcCZ|FSd< z^IYYPnk!Q+b5M_RB%K2NJ`cLlh~%~mGntK|#ECY=_mnH(J&wPTV}vquI(|ikIV5VA zu3W`?gBcSZOv__ha5rblzM+R#8oD(-!ZtLyFnVs}q)0Z4zC3Lsc56wQmGCM323*(o zbhrJn%(^9)%lCYi&wOmnowlDiAn$oSc{c%-f3M)pwRbY3_rNxA#cLmQ2b+Jr+;zxN zO7;+39`t>XzH{r%7AY)W8if>Zb9KEWXwe4KCh1qIV~G)ZU< z9p7w{kog8GVT8~LZ8a@trTgq!cvkUjNwIhU7QY~fP?AGBfau*#580&3o$z*9Wm}y8 zHzCVUzFj#M*&7riHws+Wa$N2PpPVUjpjwNLSe~gV&*!dZ2em5HCCBILvyd1W65(pB zUrwo;9Sg^J(EtlS*p}SvFn6Spi~f`|N-|N$Zr~)&-C;F7fgEc8aHap@Xf(kADCin5 z$k3v%vhfjT^RCXnm(~Y4hhmT!d{ZG39l8(D>I2Wd_3r(?s(1%)sW5vDYrQv2BL}*bNhlsCalI7nkrm)D%5j zswz=V%svx{`gC3!HW!u5;8?lY^Yd~I zYwlz#fi|^i-QH@~_HN_=S)RX~c>bR^H90VtHFn;z|N!1pr_~ z|7BsiiOu6WJhPTN?GBaY#z_y8Y}2r>Pe!5F*yY(+V>Bn{#Q5?WMegu#DBn4LnL8>DC7OWEel;JL%L4cMO71kgd*B&y)NboKhc z7FfazUW!MB{_@l3P6FIYDO$USRba6NbaCGq!#vKjd*CKx#dk6Gt5svxx9wQ1AE&1|;6nlOxzgoF6gdZPyErrNzb80HmC{C2cr zEeQM37I}WlV5stsZy?;FU6WKeN|>F16yIUC4tXobC5`bdDlZ!^>62it<+&1%hZh}x z06@+t;Cu(G6XHZ3%zBek8z7I_`G?^G)mYD8Ok>8AM%)nn%FW}*9r`_U{GgyGxZ zn+mLB$3RWIA|Jvq6&y^$Taw) zM-CURTZ#Lfq#L~p7C)C|w?0J=l<#{#R5AJ&d&^g&N+Fh$=lYG!8CoAReY zdf|*g;U%nRo8!at?^ebNb>@+@aB$W(v+t!%icF1M`vS%=;oVD?u$%)-zqsxz-Q6&+ z{Mnd#!8}B@0C90peZG8AOqP3%VQ|}1tRfg+``b=df%PU4Q}D)j!k?j6*<7GO&UN|t z?uyA%$-1SneH&4*Z8Ya8FHbS4I-Vbe5u=OyK|ITsT<6uM@_Tpn()OJzx^;By0_&B^ zC@7arYtH%Nlop270&GG;C<_K{`n%llDnXw)T0_V95!u!&)*iP+jgK$i`pq>b1HP0X zF6Ep1#^7od$MgIuZ!t-CnilnpG}^lGME1m67cnjU_{oa!>qUEZBu+IY(?&G(=8#0@wLCh3HfRxsQ`}4~TpEDu|&a zdG_cq-+@v367Rgj@}6kDAwlXdTtDR)!I2;GXW_Qo)0V%2XsMxc8NQ(QlJ}Mp1EC!~ z+A?PZz$<~N6;7f^F(5dhU#PW0a9{8ueZluLBQ|OHe)x-`ScPG+ZCeo2P5!3j0r~NE zc&Ar~(Lk;{q28SLWv*b<>F8sK;-Nz*KH;}6;gW#CtRBd4JE{$*JVN&RXx?=vs+X58WTFaTQ-gJ@(+8v>n%ZvD^tG2H zJq;fpV!c1)XMuSSyUZ1vYIaYmbLvKsn!Kcz&+s&H|&@tGXHvFmFRMb z05j_uYktNYd&+X@8JyP$fG^?{#T&$dkW?muz_S#z4}i92BqCRyK4Xn8xo?%tl+s_O zpMBk2`@pU;Od~@AcypW1vaTI({|>|An;i&4Hr?vIw2OjURarekm;>IvqwYhDgHGij zz0u$8o?S6qDKlKS`=j0CqlB)LV9z(-mH5bSS(|X73M~0{tpV$wE^^5WM4YlRgG*Ew z$rVlHr8Nr!EhKdhwB$t(uXE47jf(dI5|lsH*$(ukqsf?)wGUCx8fd-eCc56S3Izpu z8_pXuZ)%B!eEH@Y6$R5M0*UaShY|17&0+q6G8sNZ6{v5uA&v>)##9QF z|2eSuSoxA)B=*4&$oEWt+nn6N_)DstI4EF1g=zGh%OPGhT6d-KE!3bNwFKFhS^A70 zjy~(*rBXK7q2zT<+rGcqvT0+PKn}ZdZ)e{b)iD-Wcon+k8-82{aI~>%XL>hW9oHZ(& z>bkfIaZm$Q0jm;S4==@qR_lA4b}^F*uy~T!qs6Z5pZT_Z2 zyq;5aIQKrHUu_P+7L)>M&4ouBl`QuP(!UcE+Zso2-H2~IFz;doo5<5nCEqlc@yK+& zQ{J;Bl5~hcaPBO7UJKhjZo}X+Ow@UY3)WHhcF}2VH6hd%;yCQd97c^drnzTX7+ap( z!}EJc3Z|#xJRk5|`VDxTH!N0Q2vL0zIrFV9@y6dpo^5|Gk);FGHJ)7U=h%2|llvHs1bwmpA|+#Y0t& zSQgrRv-<*;s?$H3t-Fks#i+0tqqM(B1~Nf|J?oB;NMS@_teTo$*d05xz>>Y)BVwsG zYq4~?qvjX1%>H1jg0rtGds&`kW-gYphwWQ;nrPto^Tg>BK?)26p(*A*(*374t$NST zw` z+@Mfr%kqe?4-OCa%yZAc)*Q`^ydV}*c$~vaiHSP01FoX`vWCi?*P=l3J3wLwJ66k* z^KX|vRU^Zn@C?$6C4QMR?6!t7`6kFl0tjk)MPiwb1BjDdRBt3HibOEIm`dfGBgUP{fL#S&@Dwzf7TR3)C7SrF<`|~c(JG_ z%0jf*L}-K7rBWi?Ggl&hJX@h$=Vg_2r=fwMwTffv*bvd|-3RiCbGng#b+2n|wMECf=ro0v-RRv=sY^ef4vl(>BD4~e zN(cW`Vx#@yUpYaZeNu&tw!rnR799Yc#QGRtrAd>8asqWXcAxEe172GIQwKBx8$*Mf zy?fi$WMZP5De6BoHQtZP4x)vqvpoHlQBPCuaBbi3F;F03ahe4D`Eab*( zuhxLqi@0@)|G#D)O-FPp&_dMna%zfPj)HE~LI#W@hztSBM(;78g5*JGMuf$XAAJn|5tgjMokDiDwQUN|O)@um zZ@XN?4wZiZmA?}-JvBe>p@G(O)}k{3nTl8*vC?1-tDmH19i(!}GVT5eqB@LQ<7Jxl zMUk^%OF0f~7I|%g(aQt1%q^$rkl;7*z5wIEcRzwo5G@u)T65IDgB7^lj>B=(TUr3e z_@3nvX@}(~$U2vkWua>iW6VP-V(nSy=K>4-kc3q>$;S6C%_*|*~mL9))5djFu@v&G311{TAZVPiHh`iJIc2a#nS9+v#?ih750Oi z_r9rW%;N)UbvM>>X{u#d%=CP>0&LUX;OX12Apq_YYK)T<90N-9k!`nooW1s_T#KwB zUpoG_(*%;De+#|Lk`D#>CP#B#WeRKM^ICDyn-9Vww(b2QI9tMU>9m_#3NyUt)1DC;Z(20^<`y>Dc^;5R$$yD;3W(w5&*(f!a0x$2p{NNx`-*1_z4o z8=>8wk$Oo0wzhagxx3$B7?AEvOC~@h;#{ z2W$}mIn=?KBm@&AL5*`#XfO;TKURMIMD&)>uFDXQorB59q%UGk+@-Vj7u`FT^Ev`I zWc!8l9si|ARnRcjQ_L%rC-|$U7LWMjyj?G$klo6WM!kWJ)UmC>?*+gL$3>7A!W62s z&y}^D5ri*1`mw{~>&I(RlJP18917t83*Ou;ivB^b8(C0+2IFi~ZZlrqod9 zPrT0<(s$w!lC@BU4fF5*!R3G)(f(v)VaA|0hZ_^U7i3p>RR94Ms)z~2o3KWFW;g9{ zeH2TLEsue+FS``h+}bXVPRT$ElKj(+ERTZD&ZN%lAutP+6{hgbc>V(oP{`uPI-~XAMRw3fi+~Tf^fqH?QSq|duO$hg}wELTn zEdQ%oYs)%6(-eFQ$vGN`xx=dO70@Nc)oQ^bZq;RfM46&wf0P}(;!<~n9hvGwX_H`E zb=B~9;fH@M=hLCA@VgE!ZlwHQuMDyAUUyDXJIobtMat9M+vPiH-<7e5Q2#f68rC;4 zZ#XgIinpBqtfbN+AWxRo^FRKf-;F<>7!nCR5CXMIqi2Djpv7H_!5-;By89A;P<>=2 zjhtA=w;Epj0*iRQRObnTaYOT(u5>7IeoAIMZQExVSS+ zZ|(HwbC{?-b-!)VhR>*jxqb?fU+_Y5Hw1+1KqT|!lRGBF#nA=6G5Dcm9etI9PY)vvvlu?vA6O zO||Ssc)%o)S!znTpK~J|r>VIjn=WykxT}fcpVR2K!nz|6#ggA^5iZN+&sSshMk&S<#T}4K7Y{a$CWzT90!q>~ zD^c;F-`eC zUm-F&^+!UOhwVMd_K*hVz_2sfcg+&u&F7#Rsb!% zKi3F|=NtFUj3-=__w{kGQ)#UreC5j@bi1mHHY1L0SJ%H0HXq>x=2Lg8(a5I~tdrTb zDOJPG3V$TwEEoX#m{l;SPAnfRMkGad{eXMwKZuwrXw%z(mtMIKZ<(-J-E}5R06hw@EGz(7WsH zXTb|^NW&2;1xn!SKFIc2;#m+BI|(cRudJ6kCjdqAbhzZYxh98++?zk0u`aXF)yhOTtiVb7*tOpWBv zK7qvM9veWAy?LlltW2lRdaN(c7Vh^Y^^0cG3gwqiDhF<<0xr*?22A0o{TsTtP<00< z_8X%osD^7*e~RhKHSh7KnLLChQ(73zX8YRE|1}VKDLvcr$o@gVE_S<8DAa^SW@<=1 zqF#LP36DbNFK&hum)soyIOyarLcCGAun%n4-!cHHWDl-~Ytp6bX}prN8)in%$Oyf4 zu^ou*?awWz4KbgGYF~9RGBCj=B^3==;XQe;ka4x2HS3{SPeIqT1lXWOa9xy{W0=}1 zCu4d~$={-0HJL#{dbPMIgU|`%e)MVvhd$J zB`w?Ri;AtxlPM&=lP!&^{W}HV;#Tq4;$u`yt7;yQ6H%KSuFPECbu4a=~Ik zYahbHQR0Rf9x8hEje)|aB z*N@ib;l$OXcJqxNAmQu4w_hwtDS_+b-@1!?;#qsZa$%_K76aYX-TGQL%%$ zM_pt@X0SWrW3A!Tx^>?t^ajhC^;pOMlE8pfJW=<`ldQBAL&@+BOQ)#S+ACi9JrSU7 z+S~NLEljDPYLKC(PQdOz3e%g|h^ZYXu!${+N)1W?Q~lkbh5?yDm4>TG=)}nnLyzf= zH0@y|3ra+Knu7re0dcqXNei+#wb)NCqK8IJWWPycu~-(d@SHBssrAyrMrSj=HT>uV z=c4y<#l8Q@M2Re^`M2w2BTH$bVP>r-8*;o`=H47<6WeO)@An--EYqN zezMH4oA#2G`gXW5Vx^eT@yzWwv}sffxQhY%mZU*Eb$qEQ@4XJ${{a>;1HNLVC!M_;=i^}h zZ9|+sXLrSy-nUUC+IyA(6Au?nhwv+?(fO7l;gqAxj12D4`Q2z>jcYTDRw5or zA0rKF>Q~Rg502xmg{>R0Kx);VF)ypOIMc6tuoN6PS_>ZI{R_=K*M`6@aDrNH^uy_B zzI>^Ha`LuE0+5hm{DC9=w@nzt5R(c1{#~U7$`z@<9F5IRU-+s%W9n=AzA6h&nd+Py z&ie@$91FCyoz?r>2hN!Ps*7wO)0=8oyljhN#8Ic0h2WFM*%}UUH+qhEAF|0UTdy&& zjVSW(u{W(Dl#_=c?iY%M@otV^T`od-onBDBZOR6377hn*${#EKY+9sT$@KCvf}l@H z+LYeBs7W#ZU2++hrGb5$JHJ};i?X0<_VoE4^yAeB6bO1x7K;_(o9f#+GMdm&DnLvT zj8CPQ3H3-qG~ zKfWfwD-9M-_nALzXg3cv3s%TAL5l@N{roPghDRY(Nw?mr6uT&3_)eH`x-s+bXG<@4 zG-fw}d?}l9l2F;LMh$bFZ8F_OrW(|XSl=5m%*5!q=XA%2Z%JEhWz_Oo` z1Tw=QOAOV}G1$mN9%s%V>oEV8t1%H-|AtOVDKvRWhyvi6MTH~Pk|TY$R^_m`mktK| z?+6p_DGe&*n2f%&y_q)c*hQHspR>;M?t##PgWCSNUtaCXM+QF z@$%xwm8e>aM|;N+ql98=`yVP*cF8F#@d>_gNQzny)E8LQ)bIyIm7Z12we+% z>UFv_^&fQc%J-+cfTn&uGmR5b=awL}77xb?L;+cCJ?||5wo#$c^4}dcAd$M{L3JOj z?+s`hAe_x)wHLT#MjkL49@a2gxYnj)j2LY;nP}~|h>4aikayKEr=d?tF?v2oeoq_) zA&Q-e-XPW9)i2v#fg$oUXWmf z$9Sw^Nm=lhPnr7+Y^koRN#2PCKygHB$wy7t^mz(7tT<~>JHdKerSS-+gwsZvh*BtC zX9LI95)grA$$zCT`5*r(lD-4qtKB5=5AHC390)8Vz$hh=@v7X5DBOPI$}R2EnKDMx zq6xVlhDU5xr(KhK+Re+oiFWQCy-~hJul@JqNCC8Gh$iM$9mb=z)g!JttpVMBJQ<2j z8|%%i_S{vvKM|~}{(c+1dhhP7bm#CN03)e*z=~#}{)P-dul2{(d#k|_K`E=iDp|NT zNsOTbfEyhEft;<@C%E7>5t}6A_(ioofFC=segs|{94dFK6kh$(-_iRTjg*O3U{z!O zq#VWe$rSMKCL-2P79VY`Tb!@NjTP@q?CAZAuTF2qDdou&6Pqle_gQyjz;lnS|Id=A=Rd5 zF#=8{O_M0R%_cF(QIBQ!pWhXmyz_1}>8v4@sxHqqS4-Lrs)s?xZ)JOwC|L(i?S>L!z#XO^cGLKDk@Ps(8am6CG=! z3}j~re-k0*3wRMrwjgh>5254f_>Z&kkO=wY+O2*-< z_&b^l7S!YoEs<}*cF+v1;-c96w{V3yErzszs$RyIL)n^UU%axX`I8yE=qWYck((LK zwoZ#FWtFyah&8U{)x<1@?B}v~YTH61fYrq>>35@vRz)ihqzPr~B(hP7JSK<6CldSc zXtz0|dkcFpR|G7t9CV#iQoiSUKQ|xHUPmtgoU?%KwaG+j#1fvI{5|}d#~}8)T=Uy> z;UZQ{J;zS5P3nQl0G*-%FVr6dtk#FtDtvp!C?1GZ#FY^aM zGYlksTu5bc$rw{u1m5JIV$#))eSxJ>0ax=tu>NU?3odm6&h}p?5G`OZ-ysjlZ5O>u z+3bIp5{ey{jw%GRhTr9Ejf$nz?mQWMw6ab?)gl>n+KLqP)40EARjO>oaSn zU=&BnpBjOq-=lvZ*0u19<*$>Cvb=rwHBz3gQM2(`ns7q$|0lZy`-YK=kF*! z+&Am9D#yG;*n}_0WH)Br=J9)1ZGRbhKVi8Kd2`bejJ1+!s#B}cg0yei>=zV?fd@wHoWyuHKm> zug;sOU<1xCY4>7@MV5H@ekZyrWoCRp6BpZo+JK<+Kd;uOS9l$M6W@=HA8~mB10JW1&hD4Lcaq(wo-rLv}neUGIXN*Z!b+* z(Z{7F`}`SiET$FupI-Ji{PeDdtQ~rO7}sOh#NZ#t2`O;c$ z;?RM$E2L4U@r?L$VtW=ubNRroytyvqdh>30YHZGfj6`ndHD4DGPs^)3&+qqlnlo>k zc@kYDdQk_9D-|qDtdU5XFn{mksRZ9MCwlhQZ89jiSHbEEzw7*$x4 zoch@`D93-`Qf~9v-LK@KyR9b^uchb(l39}!<^EA5b$Mq^k38yQ3qysDseL(`MPICZ;^?&f|d&3mckFIcdvfxPUl#<4rU z$zj(%9O-y3@4(powUN00#Io4lAqKNKmEUioaX?`@IvVI#q;g<cX+tyg#t!^_%tNHGXb8fBYk)E@ZKzd z*J6UY;5;pEjc+>x`of6Weevy0XXic#$QWGFARWi%$z9hF#X2O*ZQhiJtdSJKtCl1qgA!j|v4k;^b6<_!(8G{vXM)rC z<1iIpL<4f>Sm|fMi+{I4c~T7u_`5=BB(s-+T=iAew!L4hu^vg$xEUKC&Pws)+Jb8X zKBi0_KT8Mf#;S1-Tf$N z+nBD((R~&-vY|^T(DBv}98PW(3qCzvzFC)cWf-ph35)IW$`E}@;>LqJt{?in6=rgR zokDK$1?)!@9QohjAnV9z_4%ALlcr+#a~c0|0Au{+uFj-GIWYo+9B)mhb!ta7LRVUn zipN8I1BOAYK;=yHidA<_t_j;#RXo1eoUg1bejvGf2&>qq!vwG}3lrvH4fm9Kjho zJuK^p>d)@(C}0Up@mq3Kws{T1vDyhZ&e^8?qMpcipH^~sD0{e!j!Z{08!;JnM7|DT znI6x5hR=QP3K9EOWDry5%XK~f%G>~$erIEqm8{W9Zmf~Su zOPa^EojZ4mk!Y?wi^`7R$dr_u95dpWT!~QQ6gvo9kvmrNBBrkA3(owTdRS&4~9O{N41CqkeT&ySVgEa_k* zzhfU4pvUy|Oc&O?&!Wiu?BrySEdpR3luU<1G=PsqH!I!V6p&C&qX($l<0#EBEj247 z1V{wdScGheET#7avs32AXN_1{mhwXiXbJf=G3Ejz^YjQR= zby3AV7y9|eS7eVe|)h^mJ$jqK*- zf*g4lG9E9*1Iq}9{-X#RRKv=t#`)zZEOBtUs1d2mvPJmxI-t}nJCqJGehcEAPgjzz;b8<&X1GX@qmm;u2JgXy9nqtAn+oM+pLaa)x_17>)@SzZfg}` zmK9Ic+^0>&rA)gZD{|TF4dDkIxLFdoZyUIzc7H86wq^Q zt=aKeDxwEX33+hX)XzpnV@KB4<0UuY;Y!W3s~)6Va|#a5X1G|P5&GQO1# zLAkXZzpTf+L?j%YoG?jbISgN*(2Tlm7NqmcS%Js^wx|MV=s3ew3z+*hcF;mCW(t>% z1S$xNLd`@_s}$4-n$MdebOW)1od(hEJMh7wB)`Wu3FZYmylwr$JuaF+bZ5=P4Qv|Y z@pc3lA4_I2U*3s$)@oE?C;KkUAIsQ`O^V=hg>3crpGlKsxd2HtBrK2QGF@D$tYBp| zUvHVSLseZODs1;Bfi+M6R=tSqU(PVjzb)3jUbz%}q20_fibon{s$?o@Rf$dkgm)FY zb508d$L-Sw#fv&&5)($fmT1dp}8k8e3@ zm)UyG`TeWJE|2glUOZYyz-h=UBx*~S|0BOX0)#(wHp|)lSASxg`;9{w#!LSTf09{m z?@NpCbZs7yaPq-XB<^_am7?i$c<3<_p&L~qN_!VXua_rn?%1l*e;Is;`RF|ic7n71 z$bYVMaerzrYb12n(G8qCqJd_vPyO2Pu&0?ZPl=B-@#WX1gqnnaokmmc@4t&Jf$(>Y zx`BK8iOauQt_u*b4AUBL2{@uX3=aZJY)^k9F(19J>(cQ-+}>$3)|Crzvd`# zqz zS-pxHO^i#bEgQe zY)FtqE##p;vNIawJe2FZS}ZnNUp97gQ{$VTA+m(R>{d(lxw!~2_2P7mI!gH+xwTEjcxUj2 zvO8dyQu>;3C>Aq@Uqd;~S>`yQnQ7pp>105zbAJ7*ifGf;^%G2=;PA4yv?6#GZ~?0<0M z=6}dx5oP}S)YGQG1ZJozbZ67_z()Eh?gsoX445GQuGhElMDZix_ z<=XYQS${ob?(h&d49;Ttd6U(9Q5>H{>)o|7G6)A}rUuu27XLQrySK0edpu$952<`E z{A927vb-*CbbH7_V0$76+7U1ZVei&!5Z##s|O4)##i)Dc|W$HHAp zh#tR$e{wc#x;YCF+BM{t=2{>H8u|vqnatOar?J{$l6*7>45^K?`y9K5Ou`|6YJh$h&9C}l zei}%1pwmd>(g|YLc}@h=%(seF_K`F5`fuP+c6$m9$=FpS15)`PSwn{tj5XCdKQmZ z+*qk%0@76JXreG#+??`$`XFtThr14<;W~OzrXsJ?!_}^y3Xt6C8lp={eAN+W2R#|h zz0^ps2eG>r&wT9KlKWF*c%uWbUS5fgu}Jk?Buhto0Gc~#*ZF3Q>=lzaP+^!R!uw5u z$;AZBGF5!Xj}wT(6w!-fXB;WmaQd)b)l-+Vw{)+oc8rv+Adr*bh(cd(w}#dxjA~tQ z*p(ybV~OZje^}h?JTMYXLVH4*2szgGK8@QGHO0b4UEN^g#I9-i>)(^Uw$o>{4Uf?BGCh;`w{ z-2Hf_22pKB-|6bJWsVxBoTo6^H`BbdV%is!|HT4Oy4$iV6?K27Vouk?Wy6r_89$~O zxlC6uQ=W=$%6`2-yDKLB^>wSjyXPhS=McyFX%R*H;}px;RIdBf@83Pq)#A6S*@5Ak zG{#k1i^b?|P{v{PwAX+2 z6;vbRw3rdwqh+*E2$#!4%Q(`Smjh4De-_m1?l35ThCzq*S0A&y&nCjK+JMDO8i@WL z-0Asj;o-W;1w3zOkJajc5LrZjR104IX&dRE;!%lysF8U7b+M>-9C9 zLq8$wSCK(5YK;}5W;UcuWn|F`NE${Z5fQBPa)XLw$H^IH^?q>bNMzwB6_U7&k`59i zd>Y(zqpHECi`gn=0<;EgC>&lA1R38Ksw}NX#J3-2gJ;B0B_HUe1t{cEC{`n5#BV5a z{nOK5n*Eb-|G0YX(Uf(X^Co@!Mxzy}WHg~4nQ@6P-`)2MxI3fEFtmYHMwb>vB9H`k z-!v0_bF}_&2L3MsC9QraZo3#helMKk zzGgC)$2-k`MO+pMWC4AQAt$a-^STq*NpsgtfV5dA7!jLwVyQ@sH22F*S6Czwi0be{ z8K8+>G72|D=YV334AL7~Sd|}EW_Hb&IkfUk#Znx_FD$iOeJn|Jlzxl40n3UsM-tC zdp6sc1XQZg_+>!)5P0HY>9?lJQ8v3@n0#=W|Nwf@<)w zBmDle^Xjo9C)LWX&p+40{~4ddoC*``+geucZ4avemc&VG zvHTt}kGbk7_t%($hzP6prg~XhD2MCN8Q{#f0JumzkOS+5sAh~Sme!`7I{bh$ zJ-juKN}dKHif5&gDckpmK!#YL+s?6G|&uwn%{F>ig3W#1szCL-1;3m|PMg#(Z)U|S`L{m^-lT~Uu~ZQ%kc zr)Dgfy~J;mbHpJ?;=HEkb}YSFMJ`L zAGtjA^ksmKkG^#~3Ewp&qDz$m^6IcZYI90_9XKul%xKls!qmLe8g(ccwj8O{5Ghf~ zuNUrgZQS>Okh0Gb;yFu{hHW0D(y>&FdwOzJwT|RYMGaJZSBr14il-X6yyaM_pMwnD zM6wG|B$@(j4cV#OF34+?D2h)C?2kRtcq7?ifkQA38ebT$ClA0FXoK9|2sX4Il)cUo ze-|rA_b(F+rU_te4%FVe`2#pNx1$3AbpWr#-m>prRa1r)HlSh@JUFZujAt+(fI*o+ zr5(DFUo7xLO--2w7sy?WPmuU3AF|C&|Lqn*lZX`U{AneeF8GO9#7VemA5H*dqx#!x z%$t?{5C0n%e3hVec#=e*FSi0^zwX)*@p?dlSpA+X0asr57qtf2Y<_}EY*tk_PCzwp z>Ug@!oH13G^fX*pC1tsX5ZzhzyAbOS`x0q?k7PCK(HiQxe-wz^a0OMp(3vv5rE*BH zhm38yHFN4fAq9q&Fkl7P(CyLe8^Z3Em9>7|yumzT77QFNI}DiEo#+?)q@h1Bkj%{{ ziZnqaVuxI$kQsILC6Uc&89yqU6?R{(n2b;RZ~m7@>#y$!2_0YB9m1VD)ZsgSg{&FU zC=x{ibODM;p(Ma;{*zg{6}YtnmYe?)C~(4W24^QNQM~M6De|f=+@F3OF3kDG!5K!X z&h96S1hqI9g*-p?7nu_YnhtbJ&^n&~p3#?Z)LO5&;HRgzc6jR3?t*javmwpN=7ACh z?f)q<495R)O;8U4^?pMM(cmDVl%bK=5w^8GcJQWG*3^t`Y~%)Y6+`$sjf{jW8ob`d zBc@TxP*E~iV{i*L5`Md{r}nf*K~bPvwC>KzqvSO>*nn6R(LHYT!38q*F-k+kcXk!R zHx;^sha{)d1wniu)#MuX5bp{P%WGpQ+P{CSS%n=hh-_}0Ycd(*Pffi}816v4@*R+C zyDY#krB(Gt zve<}f>=?_zt<~XX8;fiX4mK=Z+-pw&GHpTU@ZN}c9!^6=RSQ~Dl03)>s6z290{)0_ zJru9T>v+Jys4IxK*&ieQ=^ABTF(s$AmapcqrsC?-d}IBZp~mUnXXt^J2RKdlrj%5E zPDIp?vzVduW6{Qdu{Xsr-`1(+lYY@Y7f+c`YZQbL zYtL%z)vB0arv9Jx^5Z$GP{$HIf$@M*3eO>dqnRzWP5o^yg>bYans{I%n zI>$8dvow)fcRVCgv*s}9nNHXX7GQ`v*v*OxDL}v(Jw-N!yqO%Jk?Ex|2D<;tM}d{j z=h_3A)=-6oJ-`olKEnOssDAnE)}F~BLq%%@zCadynsk!e{ZIuE{{@aT|8AZ@U40sK zHl!hzmE3|4h^gtmMSJmJPmr7!wVQ57I2cfVlAOw_F?U)$8`OFDiBM}cg6&f{BUf4- zA7ihrQ{@PwVu{@iS6_^i^qVP$;HPs(forekQ zNxKTt16Ftb8|fVtQa|7;m{&9H&iW<83(|D4sb9L_`$Y*z1z1$MVNmFx8JGy>tg$b0 zJro-QY^)qpYCg9)5Z(Rf-JIdQs!)IIJEjGvn5A*VAO~W1_~$6!i))VYQN3W4SOTLo z5#0ncPEJk$r-eW{NEw9xP01cHehY-ZUSj?>%g(0$K-xgk)Jq}8I}RI%RaWIY{f;$+EwEh%_S*-SRH$`1aB;H zxdnfOAYh%Oni2qqGO$Ho8}6_l2^bQS^RhsY@yswxLc5=YL?UbIxjqu$cW4eOmuLha-2&%Z{eJA~7~uB?9i48L-?q0s zIpT9-Vq&Pt-ver3Xk);-1q2=}Z%1_3_syiS9#Cc&espRL=Vi%A!G`Tt5YklgOA{VS z@gV{~TWtUp)-v@rsCsVKrrTK+GX_{m+3%LtQ>pVph|=^RJ0nAo=+*jCO{>kT7SN0p ztudRl8Fw{n$}+4e*2q=+`=uUN@t?FBoFHhTQmeAhfkTuRlJsmaOUykEd@*4_7)sV(_s2E_jxakxvz zlp?~UZS^_)vNW|b9m=pteI)G%?)Q!X+M`{Er(mqcL`6XKMsyU*HSlYkLLg!*4BjuW z-<;I<=rCS!!J3Y}P*v)UhrSiPFTiyL)h*xwTO>^Px}J@g<#petLNHj)lFIDuur`S> zub3raW)_W4v>h2cAyf}Ig}f1mhJJsP|KxLo91*GXh9gl>qLKS+E&eI|xArlmQdI-T zYnh)ZD9Gt{g|08$uR+|`H|;I;#ksYm2&v2lNRJH+<#t!rpUcYZy39pFgF+S8dZ^u} zhpBcOY_{47?;XdO_2?wxwXF5@$!|Dr*hmI)h>1!f-zds-&=+81u7Zx?iZIN#!18R1 z*c$Ee%Vmm)QJWXex(?S3cHtoXF1iJsR?&ZU_t4L23%ibVLR^PMO_+D zYTQ?!@Oq8cSW;CI%1O!$1%P#8Q^H6evQ(F(j?S8CYD^&1tJ^01pgS0+#tBkY?Pa?Qhb^$8CGM;T80 z?VrV`zo9(L2JE*=KjcgvkHQ|KGmdJ+oq)5m<1xse?-2_gyHFn z@wqKK{y;oGNIJ&!t%FB_i$I^lkugB3>*JQ<*`#Ol0hx)8r>6%Yx!zN`z2lb6{uR7L zGi4Q(Kh?Vi%^omq!t=2k`4*FtlYNGxKtl|`V7K6gnv}5okd!;=$_Ql$YY4PTqB!X6 zoWI&y>B-wjovqY<(l-#}qmghjLlK_$MV}CEsG8e7TJp#CzQv2oT^u-X!jD_XeA~GV zm0O5vz>S6xpol!~b^bU_=fkVrCj$}0hB38fyByb2UsHnr3ue2&XemN_6=O(F>vfX7 zLaXTXZs8?}+sEhZEr#3(dkoO`fAq&Ad+mkl5!Dwa9Zz}EzJm#3V|&i zlC^kAt0N)-05M7`)C^e_6;FJ9YOm3l27omuCHZjWm~nA(c57c)z?v9~{?~T|NWOp{ z_Ksi^^1V2XUM%zA(XoYkg4aG!PRMs>%zUUqkLo6IZ|sRK|2@PFSqAV?yeSiavv zTD?a+(_TAtPyHSSz12D7Yb)w6;P>>r900T&iAWlxcuQnbt&Vkj8AULv2~Ci_oPGHjH{Y7vHvpHyD_hTn5NA|G#DwpgT$2>8A8=f0eIdekqQBISqexI!j^cknCqN|WEDPNUQL6rNpRBc^sa_qeTuY@cxH^K{uhkp0|<6hIJX9#MjZ zgtpn+BQfaV01N86U(iGbV}Ef4IROBHBQkL74HmG80>+>gqGW`KqM8;WHj20KohO7T z{$%-9{UzP~kswkAMJ2NMtI2<4$@2sH5U2|KVnemYgGq127DO&w$>oF8`w&GZFe>Ei zZ0r=u3W3WnMi}5x9D**E8bEbCf|n@>UARCqFQP|MwP{(6#L>1{Hd5u}8s7z%_^@3B zii6@jkq%qP8bWaqC5pmQs55LRcJRNr9g0HOZ9$~qDt?U=*!N*L0poTfEQTt|72ix} zFEEA%0DjnT9Cn7j=AfIy^-Z&YKEss{!Zv)<)qs=PS{oaCgq$xOEZ@GDh+_W%Cs!9y;={3G}D;JQpA86hlPsEQjj@O}bg zT2tBWhm;I**o~k#;*EXXz778y9Ww`P-OQd-BMr zLrqIhvF+w8QD|nJz{_BJtEAocxcu(aBqJ+GV+*03gj=Vq8vqAq}VY^*|B+~@$&LGl+>|{DwMEhv0_|LQdva~|_ z7fV>6n0#+;_YlS}T<&O@f;ZpjARCa%mZz@XPX#tT3b1z}^IlF3hUHMvJXI8z_Xa+!j!(JlJ|7Pw!{wL zA?NI_!eSA(lF*CVo8m*B5bkUAt-~KIdQkq1JQU23-220S+qpomF%Bh}Ygcb7b@)VTv*@GIlhl%e%H~<1efd3=^ zo=vj_Hi-Yd4u7~p#h76YhyojP5xIDEqZGe8F}D(AuLd7A5+ zvEP;`=CMohlxm_W<@T9U5qLl#L4&b!T%Fs1fpaQxh|Y^cQz1!@sEM@8%2f^Ipm}rb z(52*B$MF@E{m4%ASb}#^8UxbagF4f_)nJfKEED5)nIlu-vsIRa&=2l%|K3o#_jS5Ms3X#M%4US5b4# z7wDPiLaHhQ^o)<)44L>RwaZtQ9Hpqtv>HLIRsI|P@5rYa>plIS=!2A<^}6zMwBpt- z?{lUItxTSJU9Sxvdw}4eY)QOg1a{~o$iX=(t5E#m3=FMPoAV7G!m*Z ztLxTkq+De2vD)uaVzs7WcQcST4B=)@cB=~LRw*N7KUL2}AcM3k2aX*gjMyCLvHiQ) zDOwep5DSqLHoQ~oXYG>w+rsc(snM-UGaw#i{Gsi5Ub*EVtkI3v1#@TP^ccDwb;_p* z5$_jdu{)r=UwVKYG9ek=MUd#)`FN= z_);(`MK@0I4pzB|3X_2N3dFweaMSZ;vSoG>L}_7`Ak>q4C2~glyCRIEdLrxj-Lwty zyr^8VA9((bzGRWl!ALD_p@koZzi799_E9@SGl(Fm|1hVUkV3j)Aw%Gfln3!`JMZ-; z5#vKLhA3h1iB^HW0BE#n=^`3=5Sxcw+eT*?9cKxDxW^>HgnT0!NuL#c0xO<;8vJPAHKw|XuNg+64~|(5VwpVl1w;}#0lSKM@FCm3I;);dPpcI|Z=QAF*520yN|z!+ z2%0r*A09ROVD0i3HKPt~gorY(ENn{gNN6`Z<)Oi`T0jo*k2LSNLN;AU9`69@_ns&zh3~;xVSimjpIHb|X zXQg5|5>zR#n+W75818$oFNmp9(0lRn>O{Qqn%>^~=${Y8O4>7K;>SFU7u6)TXI%mK zA}+P8KVnl+4OoV4bgz6u74h++6HBsM0E;G!DNKH45=p{HLdwZ9pHuukOoc`y6CkS^ zD)JJ2c{XsmMRI>f3~PQL=*av?h;_|LB^l-B!~1E8CZxJ7W5A9%*t3U^mN&jHhR9>!J&AKm|8?~t1U}eW zoy7lH6Viw#9TL_!?~Do-No6BE3`!q-0qfbhW`-BT+x<~1qwC&kuk#>yJq ze)~zaf=}78)XM^4TPA#Gy2aaTH-aPG$6oN1rXti?=~^R1df&B#(;=2EfNcRoG~>sG z_i$3FhXHC%8iZTYDgB)`7(Mr61$D&SqP)MT8@*+EN#Rb+1|yyIPgvT3CY;uY2KH2$ z%Delt0h44p#IN^jH#%VrK=;W8w?x#QF$T(wrb3x;k6+dhhDM#ndEN47_dewQrGP!c zhMuG;ljrs!pX-jQb?rl#`Fa?hH%wUO&h@%q8h-vlUu&#wLeO2irxBoHrNc+KX<|*j z-^ddOmqONKH(FihyVlF+b8U&^Pl%%IPGFYyNC+Oi7La_m)|Wqr@VfIcw!GQ*6)r&R z#1V!JmNzgMi1q32IQ7XpOC(#Bk^7Dx_MAKarD@xFQl5fOqRs;&jzS;bR(;?5W2B_> zqE<(<#u>O8yU}wQ6|A&NvC_^8^@4WOT% Sq8KNZnXb_?bH$X)c+wWL&RNlZ^<+9 zQ3PC`++R%qkxe2RF#$)p_6I`tlY=aC5NlNo#~K3^TfC}xoj6OBX=gx0Xry)WOvIHY zLVzCEwI`0f@^>KT4Q`i0y9ZUmsjt_FJC7%B9Q8b{>XWP|-8n}cvS`d}`@nN{NioiM zmO~$L!`W`QO#Fmspym-o9J!b*vzUb@#;a@i$g83A7Ydw^Ejv8vmJM)xf_2L=T?_&OaHhR)9dz1agvM>K+0yI8G!}a8I(d!d`0cJp42-!*(}b%&|#T z=NfgvCS_#PY~Z($Un&V%R7%mqhjUuR!dYaOwzZ*1WlP53No2)yU->?V6sYYc61uO- zf0BxWzhqLOk}PaUFqyzW&qC|u5%_Fe^U{EqS1gxO)OCD?V3;Djzw!hA07P!>--!h}X3LYfVuv^Z}JT1 zm*3jk1J1CpFe=m`Ge({NeWZcy!&NIYF4OmfCR)8e-o7x8IJkgr<-tLvpA=H~_7zKbz(W}(d)>_oBg!2t*2-?G!w8_}f6q1* z5L7|%8E%SR!XjHAul45im?5ADGzm2sZorXumV(&)3FuOVTdM?oKK=><2 zyOg_|LJdsW2Y@n3$=@9P^N&NDG}QmwkQ`JSD`4vX9*7fu9N&w@lcXshfD2)7z084{ zRyoGh>a$-JDuMU^(GB*!hE;;Ib|gTR+L(M@AZuj^fO;j*P;-D;8nv7NK-EL7#5abH z#l)%hCJrF76aRmxoF}W|%wd)f*e#A&m>7UH2xPoSMd&`R{G>I#o$y@rV3K)kyzbPpw2s2*MiV_)xQ&eM-LBLB+N>Q>( I+%WL}0B;1XWdHyG literal 0 HcmV?d00001 diff --git a/open-liberty/maintainer.md b/open-liberty/maintainer.md new file mode 100644 index 000000000..04e8c5295 --- /dev/null +++ b/open-liberty/maintainer.md @@ -0,0 +1 @@ +[the Open Liberty Community](%%GITHUB-REPO%%) From 506c513775dea89b6c25e1ec23ff0036ed12da67 Mon Sep 17 00:00:00 2001 From: Alasdair Nottingham Date: Mon, 15 Jan 2018 13:47:27 -0500 Subject: [PATCH 2/2] Remove not yet existing tags from documentation, and LICENSE env var reference --- open-liberty/content.md | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/open-liberty/content.md b/open-liberty/content.md index 936d734cf..8076fe2ff 100644 --- a/open-liberty/content.md +++ b/open-liberty/content.md @@ -13,22 +13,11 @@ FROM %%IMAGE%%:kernel COPY server.xml /config/ ``` -The `microProfile1` image contains the features required to implement Eclipse MicroProfile 1.2. The `webProfile7` image contains the features required for Java EE7 Web Profile compliance. The `javaee7` image adds the features required for Java EE7 Full Platform compliance. The `javaee7` image is also tagged with `latest`. - -There are also additional images for different JVM combinations. Currently there are tags for java8 only, but there are two variants one based on IBM Java and Ubuntu and the other based on the IBM small footprint Java which is based on alpine linux. The naming structure for the variants is tag-javaversion-vandor/variant. This leads to webProfile7-java8-ibmsfj as one. At this time the full list of images are: +There are also additional images for different JVM combinations. Currently there are tags for java8 only, but there are two variants one based on IBM Java and Ubuntu and the other based on the IBM small footprint Java which is based on alpine linux. The naming structure for the variants is tag-javaversion-vandor/variant. This leads to kernel-java8-ibmsfj as one. At this time the full list of images are: kernel kernel-java8-ibm kernel-java8-ibmsfj - microProfile1 - microProfile1-java8-ibm - microProfile1-java8-ibmsfj - webProfile7 - webProfile7-java8-ibm - webProfile7-java8-ibmsfj - javaee7 - javaee7-java8-ibm - javaee7-java8-ibmsfj # Usage @@ -39,7 +28,7 @@ The images are designed to support a number of different usage patterns. The fol ```console $ docker run -d -p 80:9080 -p 443:9443 \ -v /tmp/DefaultServletEngine/dropins/Sample1.war:/config/dropins/Sample1.war \ - %%IMAGE%%:webProfile7 + %%IMAGE%%:kernel ``` When the server is started, you can browse to http://localhost/Sample1/SimpleServlet on the Docker host. @@ -49,13 +38,13 @@ The images are designed to support a number of different usage patterns. The fol ```console $ docker run -d -p 80:9080 \ -v /tmp/DefaultServletEngine:/config \ - %%IMAGE%%:webProfile7 + %%IMAGE%%:kernel-sfj ``` 3. You can also build an application layer on top of this image by using either the default server configuration or a new server configuration. In this example, we have copied the `Sample1.war` from `/tmp/DefaultServletEngine/dropins` to the same directory as the following Dockerfile. ```dockerfile - FROM %%IMAGE%%:webProfile7 + FROM %%IMAGE%%:kernel ADD Sample1.war /config/dropins/ ``` @@ -71,7 +60,7 @@ The images are designed to support a number of different usage patterns. The fol Build and run the data volume container: ```dockerfile - FROM %%IMAGE%%:webProfile7 + FROM %%IMAGE%%:kernel ADD DefaultServletEngine /config ``` @@ -85,12 +74,12 @@ The images are designed to support a number of different usage patterns. The fol ```console $ docker run -d -p 80:9080 \ - --volumes-from app %%IMAGE%%:webProfile7 + --volumes-from app %%IMAGE%%:kernel ``` # Providing your own keystore/truststore -When an `open-liberty` image starts, it can generate a Liberty server XML snippet in `/config/configDropins/defaults/keystore.xml` that specifies a `keyStore` stanza with a generated password. This causes Open Liberty to generate a default keystore and truststore with a self-signed certificate when it starts. The `javaee7` image does this automatically, but other images can request this by setting: +When an `open-liberty` image starts, it can generate a Liberty server XML snippet in `/config/configDropins/defaults/keystore.xml` that specifies a `keyStore` stanza with a generated password. This causes Open Liberty to generate a default keystore and truststore with a self-signed certificate when it starts. Images can request this by setting: ```console ENV KEYSTORE_REQUIRED "true" @@ -112,13 +101,13 @@ Taking the application image from example 3 above, containers can share the host ```console docker run -d -p 80:9080 -p 443:9443 \ - -v /tmp/open-liberty/classCache:/opt/ol/wlp//output/.classCache app + -v /tmp/open-liberty/classCache:/opt/ol/wlp/output/.classCache app ``` Or, create a named data volume container that exposes a volume at the location of the shared file: ```console -docker run -e LICENSE=accept -v /opt/ol/wlp//output/.classCache \ +docker run -v /opt/ol/wlp//output/.classCache \ --name classcache %%IMAGE%% true ``` @@ -135,7 +124,7 @@ Liberty writes to two different directories when running: `/opt/ol/wlp//output` ```console docker run -d -p 80:9080 -p 443:9443 \ --tmpfs /opt/ol/wlp//output --tmpfs /logs -v /config --read-only \ - %%IMAGE%%:javaee7 + %%IMAGE%%:kernel ``` # Relationship between Open Liberty and WebSphere Liberty