Skip to content

Instantly share code, notes, and snippets.

@millerdz
Last active July 16, 2019 16:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save millerdz/289ef2142c4f048648394295afea4170 to your computer and use it in GitHub Desktop.
Save millerdz/289ef2142c4f048648394295afea4170 to your computer and use it in GitHub Desktop.
version: "3.3"
services:
database:
image: <dtr hostname>/java/database
# set default mysql root password, change as needed
environment:
MYSQL_ROOT_PASSWORD: mysql_password
# Expose port 3306 to host.
ports:
- "3306:3306"
networks:
- back-tier
- datadog-agent
webserver:
image: <dtr hostname>/admin/java_web
ports:
- "8080:8080"
networks:
- front-tier
- back-tier
- datadog-agent
networks:
back-tier:
external: true
front-tier:
external: true
datadog-agent:
external: true
secrets:
mysql_password:
external: true
#
# Build the app using maven in a container
#
FROM maven:3.5.2-jdk-8-alpine AS devenv
WORKDIR /usr/src/java-app
COPY app/pom.xml .
RUN mvn -B -f pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:resolve
COPY ./app .
RUN mvn -B -s /usr/share/maven/ref/settings-docker.xml package -DskipTests
#
# deploy application to tomcat
#
FROM tomcat:7-jre8
LABEL maintainer="Sophia Parafina <sophia.parafina@docker.com>"
# tomcat-users.xml sets up user accounts for the Tomcat manager GUI
ADD tomcat/tomcat-users.xml $CATALINA_HOME/conf/
# ADD tomcat/catalina.sh $CATALINA_HOME/bin/
ADD tomcat/run.sh $CATALINA_HOME/bin/run.sh
RUN chmod +x $CATALINA_HOME/bin/run.sh
# add MySQL JDBC driver jar
ADD tomcat/mysql-connector-java-5.1.36-bin.jar $CATALINA_HOME/lib/
# create mount point for volume with application
WORKDIR $CATALINA_HOME/webapps/
COPY --from=devenv /usr/src/java-app/target/java-web.war .
# enable data dog
ADD apm/dd-java-agent.jar $CATALINA_HOME/lib/
ENV DD_AGENT_HOST=datadog-agent \
DD_TRACE_AGENT_PORT=8126 \
JAVA_OPTS="$JAVA_OPTS -javaagent:$CATALINA_HOME/lib/dd-java-agent.jar"
# start tomcat7 with remote debugging
EXPOSE 8080
CMD ["run.sh"]
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.docker</groupId>
<artifactId>javaweb</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>java-web</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.9.Final</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.3.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.datadoghq</groupId>
<artifactId>dd-trace-api</artifactId>
<version>0.30.0</version>
</dependency>
</dependencies>
<build>
<finalName>java-web</finalName>
</build>
</project>
apiVersion: v1
data:
mysql_password: RG9ja2VyY29uISEh
kind: Secret
metadata:
labels:
com.docker.stack.namespace: signup
name: mysql-password
namespace: default
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
labels:
com.docker.service.id: signup-database
com.docker.service.name: database
com.docker.stack.namespace: signup
name: database
namespace: default
spec:
ports:
- name: database
port: 3306
protocol: TCP
targetPort: 3306
nodePort: 32768
selector:
com.docker.service.id: signup-database
com.docker.service.name: database
com.docker.stack.namespace: signup
sessionAffinity: None
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
labels:
com.docker.service.id: signup-dotnet-api
com.docker.service.name: dotnet-api
com.docker.stack.namespace: signup
name: dotnet-api
namespace: default
spec:
ports:
- name: dotnet-api
port: 80
protocol: TCP
targetPort: 80
nodePort: 32769
selector:
com.docker.service.id: signup-dotnet-api
com.docker.service.name: dotnet-api
com.docker.stack.namespace: signup
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
labels:
com.docker.service.id: signup-java-web
com.docker.service.name: java-web
com.docker.stack.namespace: signup
name: java-web
namespace: default
spec:
ports:
- name: java-web
port: 8080
protocol: TCP
targetPort: 8080
nodePort: 32770
selector:
com.docker.service.id: signup-java-web
com.docker.service.name: java-web
com.docker.stack.namespace: signup
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
com.docker.service.id: signup-database
com.docker.service.name: database
com.docker.stack.namespace: signup
name: database
namespace: default
spec:
replicas: 1
selector:
matchLabels:
com.docker.service.id: signup-database
com.docker.service.name: database
com.docker.stack.namespace: signup
template:
metadata:
labels:
com.docker.service.id: signup-database
com.docker.service.name: database
com.docker.stack.namespace: signup
spec:
containers:
- env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-password
key: mysql_password
image: ip172-18-0-7-bkmlskp6u0dg00c6r98g.direct.beta-hybrid.play-with-docker.com/java/database:latest
imagePullPolicy: IfNotPresent
name: database
ports:
- containerPort: 3306
protocol: TCP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
com.docker.service.id: signup-dotnet-api
com.docker.service.name: dotnet-api
com.docker.stack.namespace: signup
name: dotnet-api
namespace: default
spec:
replicas: 1
selector:
matchLabels:
com.docker.service.id: signup-dotnet-api
com.docker.service.name: dotnet-api
com.docker.stack.namespace: signup
template:
metadata:
labels:
com.docker.service.id: signup-dotnet-api
com.docker.service.name: dotnet-api
com.docker.stack.namespace: signup
spec:
containers:
- image: ip172-18-0-7-bkmlskp6u0dg00c6r98g.direct.beta-hybrid.play-with-docker.com/dotnet/dotnet_api:core
imagePullPolicy: IfNotPresent
name: dotnet-api
ports:
- containerPort: 80
protocol: TCP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
com.docker.service.id: signup-java-web
com.docker.service.name: java-web
com.docker.stack.namespace: signup
name: java-web
namespace: default
spec:
replicas: 1
selector:
matchLabels:
com.docker.service.id: signup-java-web
com.docker.service.name: java-web
com.docker.stack.namespace: signup
template:
metadata:
labels:
com.docker.service.id: signup-java-web
com.docker.service.name: java-web
com.docker.stack.namespace: signup
spec:
containers:
- env:
- name: BASEURI
value: http://dotnet-api/api/users
- name: DD_AGENT_HOST
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: DD_TRACE_AGENT_PORT
value: 8126
image: ip172-18-0-7-bkmlskp6u0dg00c6r98g.direct.beta-hybrid.play-with-docker.com/java/java_web:2
imagePullPolicy: IfNotPresent
name: java-web
ports:
- containerPort: 8080
protocol: TCP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment