Skip to content

Commit 98e0cde

Browse files
committed
Switch to Docker
1 parent 046020f commit 98e0cde

File tree

9 files changed

+149
-103
lines changed

9 files changed

+149
-103
lines changed

.dockerignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.DS_Store
2+
.editorconfig
3+
.git
4+
.github
5+
*.md
6+
*.sh
7+
*.tmp
8+
tmp*

.github/workflows/gcr-deploy.yaml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: deploy
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
workflow_dispatch:
9+
10+
# Environment variables available to all jobs and steps in this workflow
11+
# NOTE: these aren't really secret, but there aren't non-secret settings
12+
env:
13+
RUN_PROJECT: ${{ secrets.RUN_PROJECT }}
14+
RUN_REGION: ${{ secrets.RUN_REGION }}
15+
RUN_SERVICE: ${{ secrets.RUN_SERVICE }}
16+
17+
jobs:
18+
deploy:
19+
name: Deploy to CloudRun
20+
runs-on: ubuntu-latest
21+
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v4
25+
26+
- name: gcloud auth
27+
id: 'auth'
28+
uses: 'google-github-actions/auth@v2'
29+
with:
30+
credentials_json: '${{ secrets.GCP_SA_KEY }}'
31+
32+
# Setup gcloud CLI
33+
- name: gcloud setup
34+
uses: google-github-actions/setup-gcloud@v2
35+
36+
- name: gcloud docker-auth
37+
run: gcloud auth configure-docker
38+
39+
# Build and push image to Google Container Registry
40+
- name: Build
41+
run: |
42+
docker build \
43+
--build-arg COMMIT=${GITHUB_SHA:0:7} \
44+
--build-arg LASTMOD=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
45+
--tag gcr.io/${RUN_PROJECT}/${RUN_SERVICE}:$GITHUB_SHA \
46+
.
47+
48+
- name: GCloud auth to docker
49+
run: |
50+
gcloud auth configure-docker
51+
52+
- name: Push to registry
53+
run: |
54+
docker push gcr.io/${RUN_PROJECT}/${RUN_SERVICE}:$GITHUB_SHA
55+
56+
# Deploy image to Cloud Run
57+
- name: Deploy
58+
run: |
59+
gcloud run deploy ${RUN_SERVICE} \
60+
--allow-unauthenticated \
61+
--image gcr.io/${RUN_PROJECT}/${RUN_SERVICE}:$GITHUB_SHA \
62+
--platform managed \
63+
--project ${RUN_PROJECT} \
64+
--region ${RUN_REGION}

Dockerfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# this one makes 352 MB image
2+
#FROM jetty:12-jre21-eclipse-temurin
3+
# this one makes a 271 MB image
4+
FROM jetty:12-jre21-alpine
5+
6+
ARG COMMIT=(not set)
7+
ARG LASTMOD=(not set)
8+
ENV COMMIT=$COMMIT
9+
ENV LASTMOD=$LASTMOD
10+
11+
USER jetty
12+
13+
# why the f*** isn't in the Dockerfile README???
14+
RUN java -jar "$JETTY_HOME/start.jar" --add-modules=ee10-webapp,ee10-deploy,ee10-jsp,ee10-jstl,ee10-websocket-jetty,ee10-websocket-jakarta
15+
16+
COPY ./www /var/lib/jetty/webapps/ROOT

docker-run.sh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env bash
2+
#
3+
# run the docker container version locally
4+
#
5+
6+
set -o errexit
7+
set -o pipefail
8+
set -o nounset
9+
10+
if false ; then
11+
docker run \
12+
--detach \
13+
--name regexplanet-java \
14+
--publish 4000:8080 \
15+
--volume "${PWD}/src/main/webapp:/var/lib/jetty/webapps/ROOT" \
16+
jetty:latest
17+
18+
19+
exit 0
20+
fi
21+
22+
docker build -t regexplanet-java .
23+
24+
25+
docker run \
26+
--expose 4000 \
27+
--env COMMIT=$(git rev-parse --short HEAD)-local \
28+
--env LASTMOD=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
29+
--env PORT='4000' \
30+
--publish 4000:8080 \
31+
regexplanet-java
32+

www/WEB-INF/cron.xml

Lines changed: 0 additions & 9 deletions
This file was deleted.

www/WEB-INF/web.xml

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
<?xml version="1.0" encoding="ISO-8859-1"?>
1+
<?xml version="1.0" encoding="UTF-8"?>
22
<web-app
3-
xmlns="http://java.sun.com/xml/ns/javaee"
3+
xmlns="https://jakarta.ee/xml/ns/jakartaee"
44
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5-
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
6-
version="2.5">
5+
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
6+
metadata-complete="false"
7+
version="5.0">
78

8-
<display-name>RegexPlanet Java API</display-name>
9+
<description>RegexPlanet Java API</description>
10+
11+
<display-name>regexplanet-java</display-name>
912

1013
<error-page>
1114
<error-code>404</error-code>
@@ -18,18 +21,24 @@
1821
</error-page>
1922

2023
<servlet>
21-
<servlet-name>StatusJson</servlet-name>
22-
<jsp-file>/status.jsp</jsp-file>
24+
<servlet-name>StatusJson</servlet-name>
25+
<jsp-file>/status.jsp</jsp-file>
2326
</servlet>
2427

2528
<servlet-mapping>
26-
<servlet-name>StatusJson</servlet-name>
27-
<url-pattern>/status.json</url-pattern>
29+
<servlet-name>StatusJson</servlet-name>
30+
<url-pattern>/status.json</url-pattern>
2831
</servlet-mapping>
2932

30-
<system-properties>
31-
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
32-
</system-properties>
33+
<servlet>
34+
<servlet-name>TestJson</servlet-name>
35+
<jsp-file>/test.jsp</jsp-file>
36+
</servlet>
37+
38+
<servlet-mapping>
39+
<servlet-name>TestJson</servlet-name>
40+
<url-pattern>/test.json</url-pattern>
41+
</servlet-mapping>
3342

3443
<welcome-file-list>
3544
<welcome-file>index.jsp</welcome-file>

www/index.jsp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
<%
2-
response.sendRedirect("http://www.regexplanet.com/advanced/java/index.html");
3-
%>
1+
<%@ page contentType="text/plain;charset=utf-8" import="java.io.*,
2+
java.time.*,
3+
java.time.format.*,
4+
java.util.*,
5+
java.util.regex.*,
6+
org.json.simple.*" %>Running Java <%= System.getProperty("java.version") %>

www/session-cleanup.jsp

Lines changed: 0 additions & 74 deletions
This file was deleted.

www/status.jsp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,21 @@
1111
1212
retVal.put("success", Boolean.TRUE);
1313
retVal.put("message", "OK");
14-
retVal.put("commit", System.getProperty("COMMIT"));
14+
retVal.put("commit", System.getenv("COMMIT"));
1515
retVal.put("timestamp", ZonedDateTime.now( ZoneOffset.UTC ).format( DateTimeFormatter.ISO_INSTANT ));
16-
retVal.put("lastmod", System.getProperty("LASTMOD"));
16+
retVal.put("lastmod", System.getenv("LASTMOD"));
1717
retVal.put("tech", "Java " + System.getProperty("java.specification.version", "(unknown)"));
1818
retVal.put("version", System.getProperty("java.version", "Unknown") + " (" + System.getProperty("java.vm.name", "Unknown VM") + ")");
1919
retVal.put("java.vendor", System.getProperty("java.vendor"));
2020
retVal.put("java.version", System.getProperty("java.version"));
2121
retVal.put("java.specification.version", System.getProperty("java.specification.version"));
2222
retVal.put("java.class.version", System.getProperty("java.class.version"));
23-
retVal.put("com.google.appengine.runtime.version", System.getProperty("com.google.appengine.runtime.version"));
2423
retVal.put("java.vm.version", System.getProperty("java.vm.version"));
2524
retVal.put("os.name", System.getProperty("os.name"));
2625
retVal.put("java.vm.specification.version", System.getProperty("java.vm.specification.version"));
27-
retVal.put("com.google.appengine.application.version", System.getProperty("com.google.appengine.application.version"));
2826
retVal.put("java.vm.vendor", System.getProperty("java.vm.vendor"));
2927
retVal.put("java.vm.name", System.getProperty("java.vm.name"));
3028
retVal.put("file.encoding", System.getProperty("file.encoding"));
31-
retVal.put("com.google.appengine.runtime.environment", System.getProperty("com.google.appengine.runtime.environment"));
3229
3330
String json = retVal.toString();
3431
String callback = request.getParameter("callback");

0 commit comments

Comments
 (0)