From 1f98d6a99af4832d230b298332f670819aa3c20c Mon Sep 17 00:00:00 2001 From: David Currie Date: Tue, 16 Dec 2014 15:45:02 +0000 Subject: [PATCH 1/3] Add WebSphere Liberty docs --- update.sh | 1 + websphere-liberty/README-short.txt | 1 + websphere-liberty/content.md | 92 +++++++++++++++++++++++++++++ websphere-liberty/license.md | 12 ++++ websphere-liberty/logo.png | Bin 0 -> 40074 bytes websphere-liberty/user-feedback.md | 8 +++ 6 files changed, 114 insertions(+) create mode 100644 websphere-liberty/README-short.txt create mode 100644 websphere-liberty/content.md create mode 100644 websphere-liberty/license.md create mode 100644 websphere-liberty/logo.png create mode 100644 websphere-liberty/user-feedback.md diff --git a/update.sh b/update.sh index 0ae908e6e..ea880a7cf 100755 --- a/update.sh +++ b/update.sh @@ -51,6 +51,7 @@ declare -A otherRepos=( [ubuntu-debootstrap]='https://github.com/tianon/docker-brew-ubuntu-debootstrap' [ubuntu-upstart]='https://github.com/tianon/dockerfiles' [ubuntu]='https://github.com/tianon/docker-brew-ubuntu-core' + [websphere-liberty]='https://github.com/WASdev/ci.docker' ) dockerLatest="$(curl -sSL 'https://get.docker.com/latest')" diff --git a/websphere-liberty/README-short.txt b/websphere-liberty/README-short.txt new file mode 100644 index 000000000..921b36748 --- /dev/null +++ b/websphere-liberty/README-short.txt @@ -0,0 +1 @@ +Official IBM WebSphere Application Server for Developers V8.5.5 Liberty Profile image. diff --git a/websphere-liberty/content.md b/websphere-liberty/content.md new file mode 100644 index 000000000..1ed83c90b --- /dev/null +++ b/websphere-liberty/content.md @@ -0,0 +1,92 @@ +# Overview + +This image contains IBM WebSphere Application Server for Developers V8.5.5 +Liberty Profile and the IBM Java Runtime Environment 7.1 SR1. For more +information on WebSphere Application Server Liberty Profile, see the +[WASdev][getting-started] site. + +# Usage + +In order to use the image, it is necessary to accept the terms of the WebSphere +Application Server for Developers and IBM JRE licenses. This is achieved by +specifying the environment variable `LICENSE` equal to `accept` when running the +image. You can also view the license terms by setting this variable to +`view`. Failure to set the variable will result in the termination of the +container with a usage statement. + +The image is designed to support a number of different usage patterns. The following examples are based on the Liberty [application deployment sample][sample] and assume that [DefaultServletEngine.zip][zip] has been extracted to `/tmp` and the `server.xml` updated to accept connections from outside of the container by adding the following element inside the `server` stanza: + +``` + +``` + +1. The image contains a default server configuration that specifies the +`webProfile-6.0` feature and exposes ports 9080 and 9443 for HTTP and HTTPs +respectively. A WAR file can therefore be mounted in to 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. + + ``` + docker run -e LICENSE=accept -d -p 80:9080 -p 443:9443 \ + -v /tmp/DefaultServletEngine/dropins/Sample1.war:/opt/ibm/wlp/usr/servers/defaultServer/dropins/Sample1.war \ + websphere-liberty + ``` + + Once the server has 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. + + ``` + docker run -e LICENSE=accept -d -p 80:9080 -p 443:9443 \ + -v /tmp/DefaultServletEngine:/opt/ibm/wlp/usr/servers/DefaultServletEngine \ + websphere-liberty DefaultServletEngine + ``` + +3. It is also possible to build an application layer on top of this image using +either the default server configuration or a new server configuration and, +optionally, accept the license as part of that build. Here we have copied the +`Sample1.war` from `/tmp/DefaultServletEngine/dropins` to the same directory as +the following Dockerfile. + + ``` + FROM websphere-liberty + ADD Sample1.war /opt/ibm/wlp/usr/servers/defaultServer/dropins/ + ENV LICENSE accept + ``` + +4. Lastly, it is possible to mount a data volume container containing 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. The 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: + + ``` + FROM ubuntu:14.04 + ADD DefaultServletEngine /opt/ibm/wlp/usr/servers/DefaultServletEngine + ``` + + ``` + docker build -t app-image . + docker run -d -v /opt/ibm/wlp/usr/servers/DefaultServletEngine \ + --name app app-image true + ``` + + Run the WebSphere Liberty image with the volumes from the data + volume container mounted: + + ``` + docker run -e LICENSE=accept -d -p 80:9080 -p 443:9443 \ + --volumes-from app websphere-liberty DefaultServletEngine + ``` + +[getting-started]: https://developer.ibm.com/wasdev/docs/category/getting-started/ +[sample]: https://developer.ibm.com/wasdev/docs/article_appdeployment/ +[zip]: https://www.ibm.com/developerworks/mydeveloperworks/blogs/wasdev/resource/DefaultServletEngine.zip \ No newline at end of file diff --git a/websphere-liberty/license.md b/websphere-liberty/license.md new file mode 100644 index 000000000..d8303a83a --- /dev/null +++ b/websphere-liberty/license.md @@ -0,0 +1,12 @@ +The Dockerfile and associated scripts are licensed under the [Apache License +2.0][apache-license]. The IBM JRE and WebSphere Application Server for +Developers are licensed under the IBM International License Agreement for +Non-Warranted Programs. Those licenses may be viewed from the image using the +`LICENSE=view` environment variable as described above or may be found online +for the [IBM JRE][jre-license] and [IBM WebSphere Application Server for +Developers][liberty-license]. Note that this license does not permit further +distribution and that the image is for development use only. + +[apache-license]: http://www.apache.org/licenses/LICENSE-2.0.html +[jre-license]: https://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-EWOD-99YA4J&title=IBM%C2%AE+SDK%2C+Java+Technology+Edition%2C+Version+7+Release+1&l=en +[liberty-license]: https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/8.5.5.3/lafiles/runtime/en.html diff --git a/websphere-liberty/logo.png b/websphere-liberty/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..29b8b6cfd1b1c9394052b134daff5404d8e9c07c GIT binary patch literal 40074 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
    XeLVls3mRCt7gG83+fFH1tk8 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 Date: Fri, 9 Jan 2015 17:23:27 +0000 Subject: [PATCH 2/3] Updates based on PR feedback --- websphere-liberty/README-short.txt | 2 +- websphere-liberty/content.md | 44 ++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/websphere-liberty/README-short.txt b/websphere-liberty/README-short.txt index 921b36748..85b8f9783 100644 --- a/websphere-liberty/README-short.txt +++ b/websphere-liberty/README-short.txt @@ -1 +1 @@ -Official IBM WebSphere Application Server for Developers V8.5.5 Liberty Profile image. +Official IBM WebSphere Application Server for Developers Liberty Profile image. diff --git a/websphere-liberty/content.md b/websphere-liberty/content.md index 1ed83c90b..220d3192a 100644 --- a/websphere-liberty/content.md +++ b/websphere-liberty/content.md @@ -1,9 +1,8 @@ # Overview -This image contains IBM WebSphere Application Server for Developers V8.5.5 -Liberty Profile and the IBM Java Runtime Environment 7.1 SR1. For more -information on WebSphere Application Server Liberty Profile, see the -[WASdev][getting-started] site. +This image contains IBM WebSphere Application Server for Developers Liberty +Profile and the IBM Java Runtime Environment. For more information on WebSphere +Application Server Liberty Profile, see the [WASdev][getting-started] site. # Usage @@ -14,14 +13,19 @@ image. You can also view the license terms by setting this variable to `view`. Failure to set the variable will result in the termination of the container with a usage statement. -The image is designed to support a number of different usage patterns. The following examples are based on the Liberty [application deployment sample][sample] and assume that [DefaultServletEngine.zip][zip] has been extracted to `/tmp` and the `server.xml` updated to accept connections from outside of the container by adding the following element inside the `server` stanza: +The image is designed to support a number of different usage +patterns. The following examples are based on the Liberty [application +deployment sample][sample] and assume that +[DefaultServletEngine.zip][zip] has been extracted to `/tmp` and the +`server.xml` updated to accept HTTP connections from outside of the +container by adding the following element inside the `server` stanza: ``` - + ``` 1. The image contains a default server configuration that specifies the -`webProfile-6.0` feature and exposes ports 9080 and 9443 for HTTP and HTTPs +`webProfile-6.0` feature and exposes ports 9080 and 9443 for HTTP and HTTPS respectively. A WAR file can therefore be mounted in to 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 @@ -36,14 +40,16 @@ ports mapped to 80 and 443 respectively. Once the server has 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. +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 that +this particular example server configuration only provides HTTP +access. ``` - docker run -e LICENSE=accept -d -p 80:9080 -p 443:9443 \ + docker run -e LICENSE=accept -d -p 80:9080 \ -v /tmp/DefaultServletEngine:/opt/ibm/wlp/usr/servers/DefaultServletEngine \ - websphere-liberty DefaultServletEngine + websphere-liberty /opt/ibm/wlp/bin/server run DefaultServletEngine ``` 3. It is also possible to build an application layer on top of this image using @@ -58,6 +64,13 @@ the following Dockerfile. ENV LICENSE accept ``` +This can then be built and run as follows: + + ``` + docker build -t app . + docker run -d -p 80:9080 -p 443:9443 app + ``` + 4. Lastly, it is possible to mount a data volume container containing 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 @@ -69,7 +82,7 @@ Dockerfile. Build and run the data volume container: ``` - FROM ubuntu:14.04 + FROM websphere-liberty ADD DefaultServletEngine /opt/ibm/wlp/usr/servers/DefaultServletEngine ``` @@ -83,8 +96,9 @@ Dockerfile. volume container mounted: ``` - docker run -e LICENSE=accept -d -p 80:9080 -p 443:9443 \ - --volumes-from app websphere-liberty DefaultServletEngine + docker run -e LICENSE=accept -d -p 80:9080 \ + --volumes-from app websphere-liberty \ + /opt/ibm/wlp/bin/server run DefaultServletEngine ``` [getting-started]: https://developer.ibm.com/wasdev/docs/category/getting-started/ From d79c319961226c5d34db5cbaf8eb288a5ac96c9c Mon Sep 17 00:00:00 2001 From: David Currie Date: Fri, 23 Jan 2015 17:52:14 +0000 Subject: [PATCH 3/3] Swap back-ticks for indents --- websphere-liberty/content.md | 56 +++++++++++++----------------------- 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/websphere-liberty/content.md b/websphere-liberty/content.md index 220d3192a..1dcaa2c56 100644 --- a/websphere-liberty/content.md +++ b/websphere-liberty/content.md @@ -20,9 +20,7 @@ deployment sample][sample] and assume that `server.xml` updated to accept HTTP connections from outside of the container by adding the following element inside the `server` stanza: -``` - -``` + 1. The image contains a default server configuration that specifies the `webProfile-6.0` feature and exposes ports 9080 and 9443 for HTTP and HTTPS @@ -31,11 +29,9 @@ 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. - ``` - docker run -e LICENSE=accept -d -p 80:9080 -p 443:9443 \ - -v /tmp/DefaultServletEngine/dropins/Sample1.war:/opt/ibm/wlp/usr/servers/defaultServer/dropins/Sample1.war \ - websphere-liberty - ``` + docker run -e LICENSE=accept -d -p 80:9080 -p 443:9443 \ + -v /tmp/DefaultServletEngine/dropins/Sample1.war:/opt/ibm/wlp/usr/servers/defaultServer/dropins/Sample1.war \ + websphere-liberty Once the server has started, you can browse to http://localhost/Sample1/SimpleServlet on the Docker host. @@ -46,11 +42,9 @@ specify the server name as a parameter to the run command. Note that this particular example server configuration only provides HTTP access. - ``` - docker run -e LICENSE=accept -d -p 80:9080 \ - -v /tmp/DefaultServletEngine:/opt/ibm/wlp/usr/servers/DefaultServletEngine \ - websphere-liberty /opt/ibm/wlp/bin/server run DefaultServletEngine - ``` + docker run -e LICENSE=accept -d -p 80:9080 \ + -v /tmp/DefaultServletEngine:/opt/ibm/wlp/usr/servers/DefaultServletEngine \ + websphere-liberty /opt/ibm/wlp/bin/server run DefaultServletEngine 3. It is also possible to build an application layer on top of this image using either the default server configuration or a new server configuration and, @@ -58,18 +52,14 @@ optionally, accept the license as part of that build. Here we have copied the `Sample1.war` from `/tmp/DefaultServletEngine/dropins` to the same directory as the following Dockerfile. - ``` - FROM websphere-liberty - ADD Sample1.war /opt/ibm/wlp/usr/servers/defaultServer/dropins/ - ENV LICENSE accept - ``` + FROM websphere-liberty + ADD Sample1.war /opt/ibm/wlp/usr/servers/defaultServer/dropins/ + ENV LICENSE accept This can then be built and run as follows: - ``` - docker build -t app . - docker run -d -p 80:9080 -p 443:9443 app - ``` + docker build -t app . + docker run -d -p 80:9080 -p 443:9443 app 4. Lastly, it is possible to mount a data volume container containing the application and the server configuration on to the image. This has the benefit @@ -81,25 +71,19 @@ Dockerfile. Build and run the data volume container: - ``` - FROM websphere-liberty - ADD DefaultServletEngine /opt/ibm/wlp/usr/servers/DefaultServletEngine - ``` + FROM websphere-liberty + ADD DefaultServletEngine /opt/ibm/wlp/usr/servers/DefaultServletEngine - ``` - docker build -t app-image . - docker run -d -v /opt/ibm/wlp/usr/servers/DefaultServletEngine \ - --name app app-image true - ``` + docker build -t app-image . + docker run -d -v /opt/ibm/wlp/usr/servers/DefaultServletEngine \ + --name app app-image true Run the WebSphere Liberty image with the volumes from the data volume container mounted: - ``` - docker run -e LICENSE=accept -d -p 80:9080 \ - --volumes-from app websphere-liberty \ - /opt/ibm/wlp/bin/server run DefaultServletEngine - ``` + docker run -e LICENSE=accept -d -p 80:9080 \ + --volumes-from app websphere-liberty \ + /opt/ibm/wlp/bin/server run DefaultServletEngine [getting-started]: https://developer.ibm.com/wasdev/docs/category/getting-started/ [sample]: https://developer.ibm.com/wasdev/docs/article_appdeployment/