|
1 | | -#Copyright (c) 2014-2018 Oracle and/or its affiliates. All rights reserved. |
| 1 | +#Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. |
2 | 2 | # |
3 | 3 | #Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl. |
4 | 4 | # |
|
11 | 11 | # |
12 | 12 | # HOW TO BUILD THIS IMAGE |
13 | 13 | # ----------------------- |
14 | | -# Put all downloaded files in the same directory as this Dockerfile |
| 14 | + |
15 | 15 | # Build the deployment archive file using the build-archive.sh script. |
16 | 16 | # $ ./build-archive.sh |
17 | 17 | # |
18 | 18 | # Run: |
19 | 19 | # $ sudo docker build \ |
| 20 | +# --build-arg CUSTOM_ADMIN_HOST=wlsadmin \ |
| 21 | +# --build-arg CUSTOM_ADMIN_PORT=7001 \ |
| 22 | +# --build-arg CUSTOM_ADMIN_NAME=7001 \ |
| 23 | +# --build-arg CUSTOM_MANAGED_SERVER_PORT=8001 \ |
| 24 | +# --build-arg CUSTOM_DOMAIN_NAME=base_domain \ |
| 25 | +# --build-arg CUSTOM_DEBUG_PORT=8453 \ |
20 | 26 | # --build-arg WDT_MODEL=simple-topology.yaml \ |
21 | 27 | # --build-arg WDT_ARCHIVE=archive.zip \ |
| 28 | +# --build-arg WDT_VARIABLE=properties/docker-build/domain.properties \ |
22 | 29 | # --force-rm=true \ |
23 | 30 | # -t 12213-domain-wdt . |
24 | 31 | # |
| 32 | +# If the ADMIN_HOST, ADMIN_PORT, MS_PORT, DOMAIN_NAME are not provided, the variables |
| 33 | +# are set to default values. (The values shown in the build statement). |
| 34 | +# |
| 35 | +# You must insure that the build arguments align with the values in the model. |
| 36 | +# The sample model replaces the attributes with tokens that are resolved from values in the |
| 37 | +# corresponding property file domain.properties. The container-scripts/setEnv.sh script |
| 38 | +# demonstrates parsing the variable file to build a string of --build-args that can |
| 39 | +# be passed on the docker build command. |
| 40 | +# |
25 | 41 | # Pull base image |
26 | 42 | # --------------- |
27 | 43 | # FROM store/oracle/weblogic:12.2.1.3 |
28 | | -FROM oracle/weblogic:12.2.1.3-developer |
| 44 | +FROM store/oracle/weblogic:12.2.1.3-dev |
29 | 45 |
|
30 | 46 | # Maintainer |
31 | 47 | # ---------- |
32 | | -MAINTAINER Monica Riccelli <monica.riccelli@oracle.com> |
| 48 | +MAINTAINER Richard Killen <richard.killen@oracle.com> |
33 | 49 |
|
34 | | -ARG WDT_MODEL |
35 | 50 | ARG WDT_ARCHIVE |
| 51 | +ARG WDT_VARIABLE |
| 52 | +ARG WDT_MODEL |
| 53 | +ARG CUSTOM_ADMIN_NAME=admin-server |
| 54 | +ARG CUSTOM_ADMIN_HOST=wlsadmin |
| 55 | +ARG CUSTOM_ADMIN_PORT=7001 |
| 56 | +ARG CUSTOM_MANAGED_SERVER_PORT=8001 |
| 57 | +ARG CUSTOM_DOMAIN_NAME=base_domain |
| 58 | +ARG CUSTOM_DEBUG_PORT=8453 |
36 | 59 |
|
37 | | -# WLS Configuration |
| 60 | +# Persist arguments - for ports to expose and container to use |
| 61 | +# Create a placeholder for the manager server name. This will be provided when run the container |
| 62 | +# Weblogic and Domain locations |
| 63 | +# Set the start derby in admin server flag to true. Override this in the runtime properties |
| 64 | +# The boot.properties will be created under the DOMAIN_HOME when the admin server container is run |
| 65 | +# WDT installation |
38 | 66 | # --------------------------- |
39 | | -ENV ADMIN_HOST="wlsadmin" \ |
40 | | - NM_PORT="5556" \ |
41 | | - MS_PORT="8001" \ |
42 | | - DEBUG_PORT="8453" \ |
| 67 | +ENV ADMIN_NAME=${CUSTOM_ADMIN_NAME} \ |
| 68 | + ADMIN_HOST=${CUSTOM_ADMIN_HOST} \ |
| 69 | + ADMIN_PORT=${CUSTOM_ADMIN_PORT} \ |
| 70 | + MANAGED_SERVER_NAME=${MANAGED_SERVER_NAME} \ |
| 71 | + MANAGED_SERVER_PORT=${CUSTOM_MANAGED_SERVER_PORT} \ |
| 72 | + DEBUG_PORT=${CUSTOM_DEBUG_PORT} \ |
| 73 | + DERBY_FLAG="true" \ |
43 | 74 | ORACLE_HOME=/u01/oracle \ |
44 | | - SCRIPT_FILE=/u01/oracle/createAndStartWLSDomain.sh \ |
45 | | - CONFIG_JVM_ARGS="-Dweblogic.security.SSL.ignoreHostnameVerification=true" \ |
46 | | - PATH=$PATH:/u01/oracle/oracle_common/common/bin:/u01/oracle/wlserver/common/bin:/u01/oracle/user_projects/domains/${DOMAIN_NAME:-base_domain}/bin:/u01/oracle |
47 | | - |
48 | | -# Domain and Server environment variables |
49 | | -# ------------------------------------------------------------ |
50 | | -ENV DOMAIN_NAME="${DOMAIN_NAME:-base_domain}" \ |
51 | | - PRE_DOMAIN_HOME=/u01/oracle/user_projects \ |
52 | | - ADMIN_PORT="${ADMIN_PORT:-7001}" \ |
53 | | - WDT_MODEL="$WDT_MODEL" \ |
54 | | - WDT_ARCHIVE="$WDT_ARCHIVE" |
| 75 | + DOMAIN_NAME=${CUSTOM_DOMAIN_NAME} \ |
| 76 | + DOMAIN_PARENT=${ORACLE_HOME}/user_projects/domains |
55 | 77 |
|
56 | | -# Add files required to build this image |
57 | | -COPY container-scripts/* /u01/oracle/ |
58 | | -COPY weblogic-deploy.zip /u01 |
59 | | -COPY ${WDT_MODEL} ${ARCHIVE_FILE} /u01/ |
| 78 | +ENV DOMAIN_HOME=${DOMAIN_PARENT}/${DOMAIN_NAME} \ |
| 79 | + PROPERTIES_FILE_DIR=$ORACLE_HOME/properties \ |
| 80 | + WDT_HOME="/u01" \ |
| 81 | + SCRIPT_HOME="${ORACLE_HOME}" \ |
| 82 | + PATH=$PATH:${ORACLE_HOME}/oracle_common/common/bin:${ORACLE_HOME}/wlserver/common/bin:${DOMAIN_HOME}:${DOMAIN_HOME}/bin:${ORACLE_HOME} |
60 | 83 |
|
61 | | -# this file contains credentials. |
62 | | -# be sure to build with --force-rm to eliminate this container layer |
63 | | -COPY properties /u01/oracle |
| 84 | +COPY weblogic-deploy.zip ${WDT_HOME} |
| 85 | +COPY container-scripts/* ${SCRIPT_HOME}/ |
64 | 86 |
|
65 | | -# Create directory where domain will be written to |
| 87 | +# Create the properties file directory and the domain home parent with the correct permissions / owner. |
| 88 | +# Unzip and install the WDT image and change the permissions / owner. |
66 | 89 | USER root |
67 | | -RUN chmod +xw /u01/oracle/*.sh && \ |
68 | | - chmod +xw /u01/oracle/*.py && \ |
69 | | - mkdir -p $PRE_DOMAIN_HOME && \ |
70 | | - mkdir -p $PRE_DOMAIN_HOME/domains && \ |
71 | | - chmod a+xr $PRE_DOMAIN_HOME && \ |
72 | | - chown -R oracle:oracle $PRE_DOMAIN_HOME && \ |
73 | | - cd /u01 && \ |
74 | | - $JAVA_HOME/bin/jar xf /u01/weblogic-deploy.zip && \ |
75 | | - chmod +xw /u01/weblogic-deploy/bin/*.sh && \ |
76 | | - chmod -R +xw /u01/weblogic-deploy/lib/python && \ |
77 | | - if [ -n "$WDT_MODEL" ]; then MODEL_OPT="-model_file /u01/$WDT_MODEL"; fi && \ |
78 | | - if [ -n "$WDT_ARCHIVE" ]; then ARCHIVE_OPT="-archive_file /u01/$WDT_ARCHIVE"; fi && \ |
79 | | - /u01/weblogic-deploy/bin/createDomain.sh \ |
| 90 | +RUN chmod +xw $SCRIPT_HOME/*.sh && \ |
| 91 | + chown -R oracle:oracle ${SCRIPT_HOME} && \ |
| 92 | + mkdir -p +xwr $PROPERTIES_FILE_DIR && \ |
| 93 | + chown -R oracle:oracle $PROPERTIES_FILE_DIR && \ |
| 94 | + mkdir -p $DOMAIN_PARENT && \ |
| 95 | + chown -R oracle:oracle $DOMAIN_PARENT && \ |
| 96 | + chmod -R a+xwr $DOMAIN_PARENT && \ |
| 97 | + cd ${WDT_HOME} && \ |
| 98 | + $JAVA_HOME/bin/jar xf ./weblogic-deploy.zip && \ |
| 99 | + rm weblogic-deploy.zip && \ |
| 100 | + chmod +xw weblogic-deploy/bin/*.sh && \ |
| 101 | + chmod -R +xw weblogic-deploy/lib/python && \ |
| 102 | + chown -R oracle:oracle weblogic-deploy |
| 103 | + |
| 104 | +# Persist the WDT tool home location |
| 105 | +ENV WDT_HOME=$WDT_HOME/weblogic-deploy |
| 106 | + |
| 107 | +# Copy the WDT model, archive file, variable file and credential secrets to the property file directory. |
| 108 | +# These files will be removed after the image is built. |
| 109 | +# Be sure to build with --force-rm to eliminate this container layer |
| 110 | + |
| 111 | +COPY ${WDT_MODEL} ${WDT_ARCHIVE} ${WDT_VARIABLE} properties/docker-build/*.properties ${PROPERTIES_FILE_DIR}/ |
| 112 | +# --chown for COPY is available in docker version 18 'COPY --chown oracle:oracle' |
| 113 | +RUN chown -R oracle:oracle ${PROPERTIES_FILE_DIR} |
| 114 | + |
| 115 | +# Create the domain home in the docker image. |
| 116 | +# |
| 117 | +# The create domain tool creates a domain at the DOMAIN_HOME location |
| 118 | +# The domain name is set using the value in the model / variable files |
| 119 | +# The domain name can be different from the DOMAIN_HOME domain folder name. |
| 120 | +# |
| 121 | +# Set WORKDIR for @@PWD@@ global token in model file |
| 122 | +WORKDIR $ORACLE_HOME |
| 123 | +USER oracle |
| 124 | +RUN if [ -n "$WDT_MODEL" ]; then MODEL_OPT="-model_file $PROPERTIES_FILE_DIR/${WDT_MODEL##*/}"; fi && \ |
| 125 | + if [ -n "$WDT_ARCHIVE" ]; then ARCHIVE_OPT="-archive_file $PROPERTIES_FILE_DIR/${WDT_ARCHIVE##*/}"; fi && \ |
| 126 | + if [ -n "$WDT_VARIABLE" ]; then VARIABLE_OPT="-variable_file $PROPERTIES_FILE_DIR/${WDT_VARIABLE##*/}"; fi && \ |
| 127 | + ${WDT_HOME}/bin/createDomain.sh \ |
80 | 128 | -oracle_home $ORACLE_HOME \ |
81 | | - -java_home ${JAVA_HOME} \ |
82 | | - -domain_parent $PRE_DOMAIN_HOME/domains \ |
| 129 | + -java_home $JAVA_HOME \ |
| 130 | + -domain_home $DOMAIN_HOME \ |
83 | 131 | -domain_type WLS \ |
84 | | - -variable_file /u01/oracle/domain.properties \ |
| 132 | + $VARIABLE_OPT \ |
85 | 133 | $MODEL_OPT \ |
86 | 134 | $ARCHIVE_OPT && \ |
87 | | - chown -R oracle:oracle $PRE_DOMAIN_HOME && \ |
88 | | - rm /u01/oracle/domain.properties |
| 135 | + chmod -R a+x $DOMAIN_HOME/bin/*.sh && \ |
| 136 | + rm -rf $PROPERTIES_FILE_DIR |
89 | 137 |
|
90 | | -VOLUME $PRE_DOMAIN_HOME |
91 | | -# Expose Node Manager default port, and also default for admin and managed server |
92 | | -EXPOSE $NM_PORT $ADMIN_PORT $MS_PORT $DEBUG_PORT |
| 138 | +# Mount the domain home and the WDT home for easy access. |
| 139 | +VOLUME $DOMAIN_HOME |
| 140 | +VOLUME $WDT_HOME |
93 | 141 |
|
94 | | -USER oracle |
95 | | -WORKDIR $ORACLE_HOME |
| 142 | +# Expose admin server, managed server port and domain debug port |
| 143 | +EXPOSE $ADMIN_PORT $MANAGED_SERVER_PORT $DEBUG_PORT |
| 144 | + |
| 145 | +WORKDIR $DOMAIN_HOME |
96 | 146 |
|
97 | | -# Define default command to start bash. |
98 | | -CMD ["/u01/oracle/startWLSDomain.sh"] |
| 147 | +# Define default command to start Admin Server in a container. |
| 148 | +CMD ["/u01/oracle/startAdminServer.sh"] |
0 commit comments