Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 14 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
FROM jeanblanchard/busybox-java:7

MAINTAINER [email protected] / [email protected]
MAINTAINER [email protected] / [email protected] / [email protected]

WORKDIR /opt/introscope-install

### For new Introscope version you must change the following variables
ENV INTROSCOPE_HOME=/root/Introscope
ENV INTROSCOPE_BIN=introscope9.7.0.27otherUnix.jar
ENV INTROSCOPE_OSGI=osgiPackages.v9.7.0.27.unix.tar
### End for new Introscope version

ADD SampleResponseFile.Introscope.txt /opt/introscope-install/SampleResponseFile.Introscope.txt
ADD introscope9.6.0.0otherUnix.jar /opt/introscope-install/introscope9.6.0.0otherUnix.jar
ADD $INTROSCOPE_BIN /opt/introscope-install/$INTROSCOPE_BIN
# I learned the hard way that ADDing a tar file will extract it - not what we want here.
COPY osgiPackages.v9.6.0.0.unix.tar /opt/introscope-install/osgiPackages.v9.6.0.0.unix.tar
COPY $INTROSCOPE_OSGI /opt/introscope-install/$INTROSCOPE_OSGI
ADD eula-osgi/eula.txt /opt/introscope-install/eula-osgi/eula.txt
ADD eula-introscope/ca-eula.txt /opt/introscope-install/eula-introscope/ca-eula.txt
ADD startup.sh /opt/introscope-install/startup.sh
Expand All @@ -16,10 +22,10 @@ ADD addons /opt/introscope-install/addons
RUN chmod +x startup.sh

# run the installation of the enterprise manager
RUN java -jar introscope9.6.0.0otherUnix.jar -f SampleResponseFile.Introscope.txt
RUN java -jar $INTROSCOPE_BIN -f SampleResponseFile.Introscope.txt

# we expect to have a license file that we can copy to the server.
ADD license.lic /root/Introscope9.6.0.0/license/license.lic
#ADD license.lic $INTROSCOPE_HOME/license/license.lic

ENV HEAP_XMX **DEFAULT**

Expand All @@ -30,7 +36,7 @@ EXPOSE 8081
# Port on which WebView will listen for HTTP connections.
EXPOSE 8080

VOLUME /root/Introscope9.6.0.0/data
VOLUME /root/Introscope9.6.0.0/traces
VOLUME $INTROSCOPE_HOME/data
VOLUME $INTROSCOPE_HOME/traces

CMD /opt/introscope-install/startup.sh
CMD /opt/introscope-install/startup.sh
40 changes: 29 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,71 @@
# docker-introscope-enterprise manager
A docker (https://www.docker.com/) image build for the APM solution of Computer Asscociates (CA APM). This project build a docker image for an Introscope enterprise manager in version 9.6.0.0. It is meant to be used in combination with the docker image docker-introscope-postgres (https://github.com/stefansiegl/docker-introscope-postgres), which provides the database for the enterprise manager.
A docker (https://www.docker.com/) image build for the APM solution of Computer Asscociates (CA APM). This project build a docker image for an Introscope enterprise manager in version 9.7 It is meant to be used in combination with the docker image docker-introscope-postgres (https://github.com/stefansiegl/docker-introscope-postgres), which provides the database for the enterprise manager.

Note that due to licensing reasons, it is not possible to package the installation files and the license in this image. Please read the usage which file you have to put where.

## Necessary configuration prior to building
The docker image needs the installation files from CA Wily Introscope. Simply copy the files:
- introscope9.6.0.0otherUnix.jar (installer of the enterprise manager)
- osgiPackages.v9.6.0.0.unix.tar (osgi packages that you can download from http://opensrcd.ca.com/ips/osgi/introscope_9.6.0.0/)
- introscope9.7.0.0otherUnix.jar (installer of the enterprise manager)
- osgiPackages.v9.7.0.27.unix.tar (osgi packages that you can download from http://opensrcd.ca.com/ips/osgi/introscope_9.7.0.0/)
- license.lic (I noticed that the enterprise manager can start without a license, but you are expected to put one here)

It goes without saying that you need docker installed. If you are on Windows (like me) or Mac, you can use boot2docker - I works perfectly for me.

## Build script and Dockerfile

All the script and Dockerfile are ready to build the image for the latest version of Introscope, the script or manifest don't reference any EM version, if you want to use this project for EM 9.8 you just have to change Dockerfile variables:

```
ENV INTROSCOPE_BIN=introscope9.7.0.27otherUnix.jar
ENV INTROSCOPE_OSGI=osgiPackages.v9.7.0.27.unix.tar
```



## Building the image
Fire up docker (or like in my case boot2docker), navigate to the project and execute the
Fire up docker (or like in my case boot2docker), navigate to the project and execute the

```
build-image.sh
```

file.

## Starting the Introscope EM using docker compose
This aproach will start postgresql and Inroscope, if you need more information look at the file docker-compose.yml

```
docker-compose up -d
```

## Starting the image
If you just want the easiest solution, simply start the enterprise manager by

```
run-default-em-container.sh
```

This image is expected to be connected to a container of stefansiegl/introscope-postgres:9.6.0.0 that will provide the database for the enterprise manager. Furthermore, the image expects that a docker link --link is setup with the logical name being set to "db".
This image is expected to be connected to a container of stefansiegl/introscope-postgres:9.7 that will provide the database for the enterprise manager. Furthermore, the image expects that a docker link --link is setup with the logical name being set to "db".

```
docker run -d --name introscope-em --link introscope-db:db stefansiegl/introscope-em:9.6.0.0
docker run -d --name introscope-em --link introscope-db:db stefansiegl/introscope-em:9.7
```

## Access to management modules
There are two ways to manage management modules with this image. The quick (and dirty) approach is to "mount" a local folder that is then used as management module folder. Drawback of this approach is, that the local folder overwrites the management module folder of the enterprise manager. So you need to place the out-of-the-box management modules in this folder as well.
There are two ways to manage management modules with this image. The quick (and dirty) approach is to "mount" a local folder that is then used as management module folder. Drawback of this approach is, that the local folder overwrites the management module folder of the enterprise manager. So you need to place the out-of-the-box management modules in this folder as well.

```
docker run -d --name introscope-em --link introscope-db:db -v [localfolder]:/root/Introscope9.6.0.0/config/modules stefansiegl/introscope-em:9.6.0.0
docker run -d --name introscope-em --link introscope-db:db -v [localfolder]:/root/Introscope/config/modules stefansiegl/introscope-em:9.7
```

The second approach allows to add management modules to the existing config/modules folder. The startup script of the container ensures that all files that are within /transfer/modules (in the container) are copied to the config/modules folder. Thus you could keep the management modules you want to integrate locally in a folder and run the container like this (note that the management modules you copied to the container are persisted):

```
docker run -d --name introscope-em --link introscope-db:db -v [localfolder_containing_MM]:/transfer/modules stefansiegl/introscope-em:9.6.0.0
docker run -d --name introscope-em --link introscope-db:db -v [localfolder_containing_MM]:/transfer/modules stefansiegl/introscope-em:9.7
```

## Installing Plugins
The enterprise manager allows to install additional plugins. This image allows this during the build. Simply place your extensions in the folder addons/em and addons/workstation.
The enterprise manager allows to install additional plugins. This image allows this during the build. Simply place your extensions in the folder addons/em and addons/workstation.

## Additional configuration with environment variables
Additional configuration is possible with environment variables. This image currently supports the following:
Expand Down Expand Up @@ -80,5 +98,5 @@ docker exec -it em bash
```

## Default values
Check the checked-in response file for the default settings the introscope enterprise manager is installed with and adapt it to your needs.
Check the checked-in response file for the default settings the introscope enterprise manager is installed with and adapt it to your needs.
Please note that the database settings are set in a way that this image is interoperable with stefansiegl/introscope-postgres, so be careful when changing this. Especially note that the file write DATABASE_URL for the database. This string is replaced during startup of the enterprise manager and substituted by the linked stefansiegl/introscope-postgres container.
22 changes: 11 additions & 11 deletions SampleResponseFile.Introscope.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Introscope Silent Installation Response File
#
# Sample Response File
# CA Wily Introscope(R) Version 9.6.0.0 Release 9.6.0.0
# CA Wily Introscope(R) Version 9.7.0 Release 9.7.0.27
# Copyright (c) 2014 CA. All Rights Reserved.
# Introscope(R) is a registered trademark of CA.
#
Expand Down Expand Up @@ -66,14 +66,14 @@ ca-eulaFile=eula-introscope/ca-eula.txt
# Example Unix install directory: /IntroscopeSilentInstall/
# Left blank, this property will default to one of the following values:
# On Windows...
# C:\\Program Files\\CA APM\\Introscope9.6.0.0\\
# C:\\Program Files\\CA APM\\Introscope9.7.0.27\\
# (Exact name and drive letter of program files directory may vary
# depending on OS configuration)
# On Unix...
# /root/Introscope9.6.0.0/
# /root/Introscope9.7.0.27/
# (Under the logged-in-end-user's home directory. Exact directory may vary
# depending on user account.)
USER_INSTALL_DIR=/root/Introscope9.6.0.0
USER_INSTALL_DIR=/root/Introscope

# Introscope features to install. Must be a comma-delimited list.
# Example: Enterprise Manager,WebView,ProbeBuilder
Expand All @@ -98,7 +98,7 @@ silentInstallChosenFeatures=Enterprise Manager,WebView,ProbeBuilder
# Example Windows value: C:\\osgiPackages.v<x.y>.windows.zip
# Example Unix value: /osgiPackages.v<x.y>.unix.tar
# where <x.y> should be a valid version string.
externalComponentPackage=osgiPackages.v9.6.0.0.unix.tar
externalComponentPackage=osgiPackages.v9.7.0.27.unix.tar

# If the above chosen features list includes Enterprise Manager or WebView,
# specify the location of the external component library's End User
Expand Down Expand Up @@ -300,13 +300,13 @@ shouldEnableCAAPMForWebLogic=false
shouldEnableCAAPMForWebLogicPortal=false

#CA APM for IBM WebSphere Application Server for Distributed Environments
shouldEnableCAAPMForWebSphere=true
shouldEnableCAAPMForWebSphere=false

#CA APM for IBM WebSphere Portal
shouldEnableCAAPMForWebSpherePortal=true
shouldEnableCAAPMForWebSpherePortal=false

#CA APM for IBM WebSphere MQ and IBM WebSphere Message Broker
shouldEnableCAAPMForWebSphereMQandMB=true
shouldEnableCAAPMForWebSphereMQandMB=false

#CA APM for IBM WebSphere Application Server for z/OS
shouldEnableCAAPMForWebSphereZOS=false
Expand All @@ -318,7 +318,7 @@ shouldEnableCAAPMForIBMCTG=false
shouldEnableCAAPMForIBMzOSExtension=false

#CA Cross-Enterprise Application Performance Management
shouldEnableSysview=true
shouldEnableSysview=false

#CA APM for CA SiteMinder Web Access Manager
shouldEnableCAAPMForSiteMinder=false
Expand Down Expand Up @@ -432,7 +432,7 @@ dbPassword=

# For PostgreSQL DB installation on Windows platform only
# Set the DB install script execution timeout wait time (in milliseconds)
#dbInstallScriptTimeoutInMillis=240000
dbInstallScriptTimeoutInMillis=240000

# Set validateDatabase to true if you want to validate the existing APM database and
# create new schema.
Expand Down Expand Up @@ -509,7 +509,7 @@ wvAsServiceDisplayName=Introscope WebView
# WebView JVM. The recommended setting for the headless switch is:
# - false for Windows platforms
# - true for other UNIX and mainframe platforms
#wvLaxNlJavaOptionAdditional=-Xms128m -Xmx512m -Djava.awt.headless=true -Dorg.owasp.esapi.resources=./config/esapi -Dsun.java2d.noddraw=true -XX:PermSize=128m -XX:MaxPermSize=256m
#wvLaxNlJavaOptionAdditional=-Xms256m -Xmx1024m -Djava.awt.headless=false -Dorg.owasp.esapi.resources=./config/esapi -Dsun.java2d.noddraw=true -XX:PermSize=128m -XX:MaxPermSize=256m



Expand Down
13 changes: 4 additions & 9 deletions build-image.sh
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#/bin/sh

introscopeinstallfile="introscope9.6.0.0otherUnix.jar"
osgipackages="osgiPackages.v9.6.0.0.unix.tar"
introscopeinstallfile=`ls *otherUnix.jar`
osgipackages=`ls osgi*.unix.tar`
errors=false

if [ ! -e $introscopeinstallfile ] ; then
Expand All @@ -10,16 +10,11 @@ if [ ! -e $introscopeinstallfile ] ; then
fi

if [ ! -e $osgipackages ] ; then
echo "FATAL: File $osgipackages does not exist. Please download this from http://opensrcd.ca.com/ips/osgi/introscope_9.6.0.0/"
errors=true
fi

if [ ! -e license.lic ] ; then
echo "FATAL: Please provide a license.lic file. The EM starts without a license, so if you do not need any, just remove this line and remove the adding of the license in the dockerfile."
echo "FATAL: File $osgipackages does not exist. Please download this from http://opensrcd.ca.com/ips/osgi/introscope_X.Y.0.0/"
errors=true
fi

if [ "$errors" = false ] ; then
echo "Starting the build"
docker build -t stefansiegl/introscope-em:9.6.0.0 .
docker build -t stefansiegl/introscope-em .
fi
13 changes: 13 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
db:
image: produban/introscope-postgresql:9.7

introscope:
image: stefansiegl/introscope-em
links:
- db:db
ports:
- "5001:5001"
- "8081:8081"
- "8080:8080"
environment:
- HEAP="1024m"
Loading