Skip to content

Commit fef815c

Browse files
committed
feat: production deployment changes
1 parent 2e309b2 commit fef815c

File tree

8 files changed

+236
-1
lines changed

8 files changed

+236
-1
lines changed

Dockerfile

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#
2+
# conductor:server - Netflix conductor server
3+
#
4+
5+
# ===========================================================================================================
6+
# 0. Builder stage
7+
# ===========================================================================================================
8+
FROM eclipse-temurin:17-jdk-focal AS builder
9+
10+
LABEL maintainer="Netflix OSS <[email protected]>"
11+
12+
# Copy the project directly onto the image
13+
COPY . /conductor
14+
WORKDIR /conductor
15+
16+
# Build the server on run
17+
RUN ./gradlew build -x test --stacktrace
18+
19+
# ===========================================================================================================
20+
# 1. Bin stage
21+
# ===========================================================================================================
22+
FROM eclipse-temurin:17-jre-focal
23+
24+
LABEL maintainer="Netflix OSS <[email protected]>"
25+
26+
# Make app folders
27+
RUN mkdir -p /app/config /app/logs /app/libs
28+
29+
# Copy the compiled output to new image
30+
COPY --from=builder /conductor/docker/server/bin /app
31+
COPY --from=builder /conductor/docker/server/config /app/config
32+
COPY --from=builder /conductor/server/build/libs/*boot*.jar /app/libs/conductor-server.jar
33+
34+
# Copy the files for the server into the app folders
35+
RUN chmod +x /app/startup.sh
36+
37+
HEALTHCHECK --interval=60s --timeout=30s --retries=10 CMD curl -I -XGET http://localhost:8080/health || exit 1
38+
39+
CMD [ "/app/startup.sh" ]
40+
ENTRYPOINT [ "/bin/sh"]

core/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ dependencies {
4343

4444
implementation "org.openjdk.nashorn:nashorn-core:15.4"
4545

46+
implementation "com.netflix.spectator:spectator-reg-metrics3:${version_spectator}"
47+
4648
// JAXB is not bundled with Java 11, dependencies added explicitly
4749
// These are needed by Apache BVAL
4850
implementation "jakarta.xml.bind:jakarta.xml.bind-api:${revJAXB}"

dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,5 @@ ext {
6767
revNatsStreaming = '2.6.5'
6868
revNats = '2.15.6'
6969
revStan = '2.2.3'
70-
70+
version_spectator='0.60.0'
7171
}

server/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ dependencies {
7070
implementation "io.orkes.queues:orkes-conductor-queues:${revOrkesQueues}"
7171

7272
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:${revSpringDoc}"
73+
runtimeOnly group: 'com.netflix.conductor', name: 'conductor-postgres-persistence', version: '3.9.1'
7374

75+
implementation "com.netflix.spectator:spectator-reg-metrics3:${version_spectator}"
7476

7577
runtimeOnly "org.glassfish.jaxb:jaxb-runtime:${revJAXB}"
7678

ui/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM nginx
2+
COPY default.conf /etc/nginx/conf.d/default.conf
3+
COPY build/ /usr/share/nginx/html

ui/default-dev.conf

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
map $http_x_forwarded_for $allow {
2+
default 0;
3+
"103.138.236.18" 1;
4+
"103.181.238.106" 1;
5+
"103.142.30.151" 1;
6+
"61.2.142.186" 1;
7+
}
8+
9+
server {
10+
listen 5000;
11+
server_name conductor;
12+
server_tokens off;
13+
14+
location / {
15+
16+
if ($allow != 1) {
17+
return 401;
18+
}
19+
20+
add_header Referrer-Policy "strict-origin";
21+
add_header X-Frame-Options "SAMEORIGIN";
22+
add_header X-Content-Type-Options "nosniff";
23+
add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' assets.orkes.io *.googletagmanager.com *.pendo.io https://cdn.jsdelivr.net; worker-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;";
24+
add_header Permissions-Policy "accelerometer=(), autoplay=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), xr-spatial-tracking=(), clipboard-read=(self), clipboard-write=(self), gamepad=(), hid=(), idle-detection=(), serial=(), window-placement=(self)";
25+
26+
# This would be the directory where your React app's static files are stored at
27+
root /usr/share/nginx/html;
28+
try_files $uri /index.html;
29+
}
30+
31+
location /api {
32+
proxy_set_header X-Real-IP $remote_addr;
33+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
34+
proxy_set_header X-NginX-Proxy true;
35+
proxy_pass http://sirn-dev-mb-svc-conductor-server.sirn-dev-mb.local:8080/api;
36+
proxy_ssl_session_reuse off;
37+
proxy_set_header Host $http_host;
38+
proxy_cache_bypass $http_upgrade;
39+
proxy_redirect off;
40+
}
41+
42+
location /actuator {
43+
proxy_set_header X-Real-IP $remote_addr;
44+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
45+
proxy_set_header X-NginX-Proxy true;
46+
proxy_pass http://sirn-dev-mb-svc-conductor-server.sirn-dev-mb.local:8080/actuator;
47+
proxy_ssl_session_reuse off;
48+
proxy_set_header Host $http_host;
49+
proxy_cache_bypass $http_upgrade;
50+
proxy_redirect off;
51+
}
52+
53+
location /swagger-ui {
54+
proxy_set_header X-Real-IP $remote_addr;
55+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
56+
proxy_set_header X-NginX-Proxy true;
57+
proxy_pass http://sirn-dev-mb-svc-conductor-server.sirn-dev-mb.local:8080/swagger-ui;
58+
proxy_ssl_session_reuse off;
59+
proxy_set_header Host $http_host;
60+
proxy_cache_bypass $http_upgrade;
61+
proxy_redirect off;
62+
}
63+
64+
location /health {
65+
access_log off;
66+
add_header 'Content-Type' 'application/json';
67+
return 200 '{"status":"UP"}';
68+
}
69+
}

ui/default-local.conf

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
server {
2+
listen 5000;
3+
server_name conductor;
4+
server_tokens off;
5+
6+
location / {
7+
add_header Referrer-Policy "strict-origin";
8+
add_header X-Frame-Options "SAMEORIGIN";
9+
add_header X-Content-Type-Options "nosniff";
10+
add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' assets.orkes.io *.googletagmanager.com *.pendo.io https://cdn.jsdelivr.net; worker-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;";
11+
add_header Permissions-Policy "accelerometer=(), autoplay=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), xr-spatial-tracking=(), clipboard-read=(self), clipboard-write=(self), gamepad=(), hid=(), idle-detection=(), serial=(), window-placement=(self)";
12+
13+
# This would be the directory where your React app's static files are stored at
14+
root /usr/share/nginx/html;
15+
try_files $uri /index.html;
16+
}
17+
18+
location /api {
19+
proxy_set_header X-Real-IP $remote_addr;
20+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
21+
proxy_set_header X-NginX-Proxy true;
22+
proxy_pass http://localhost:8080/api;
23+
proxy_ssl_session_reuse off;
24+
proxy_set_header Host $http_host;
25+
proxy_cache_bypass $http_upgrade;
26+
proxy_redirect off;
27+
}
28+
29+
location /actuator {
30+
proxy_set_header X-Real-IP $remote_addr;
31+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
32+
proxy_set_header X-NginX-Proxy true;
33+
proxy_pass http://localhost:8080/actuator;
34+
proxy_ssl_session_reuse off;
35+
proxy_set_header Host $http_host;
36+
proxy_cache_bypass $http_upgrade;
37+
proxy_redirect off;
38+
}
39+
40+
location /swagger-ui {
41+
proxy_set_header X-Real-IP $remote_addr;
42+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
43+
proxy_set_header X-NginX-Proxy true;
44+
proxy_pass http://localhost:8080/swagger-ui;
45+
proxy_ssl_session_reuse off;
46+
proxy_set_header Host $http_host;
47+
proxy_cache_bypass $http_upgrade;
48+
proxy_redirect off;
49+
}
50+
}

ui/default-prd.conf

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
map $http_x_forwarded_for $allow {
2+
default 0;
3+
"103.138.236.18" 1;
4+
"103.181.238.106" 1;
5+
"103.142.30.151" 1;
6+
"61.2.142.186" 1;
7+
}
8+
9+
server {
10+
listen 5000;
11+
server_name conductor;
12+
server_tokens off;
13+
14+
location / {
15+
16+
if ($allow != 1) {
17+
return 401;
18+
}
19+
20+
add_header Referrer-Policy "strict-origin";
21+
add_header X-Frame-Options "SAMEORIGIN";
22+
add_header X-Content-Type-Options "nosniff";
23+
add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' assets.orkes.io *.googletagmanager.com *.pendo.io https://cdn.jsdelivr.net; worker-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:;";
24+
add_header Permissions-Policy "accelerometer=(), autoplay=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), xr-spatial-tracking=(), clipboard-read=(self), clipboard-write=(self), gamepad=(), hid=(), idle-detection=(), serial=(), window-placement=(self)";
25+
26+
# This would be the directory where your React app's static files are stored at
27+
root /usr/share/nginx/html;
28+
try_files $uri /index.html;
29+
}
30+
31+
location /api {
32+
proxy_set_header X-Real-IP $remote_addr;
33+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
34+
proxy_set_header X-NginX-Proxy true;
35+
proxy_pass http://sirn-prd-mb-svc-conductor-server.sirn-prd-mb.local:8080/api;
36+
proxy_ssl_session_reuse off;
37+
proxy_set_header Host $http_host;
38+
proxy_cache_bypass $http_upgrade;
39+
proxy_redirect off;
40+
}
41+
42+
location /actuator {
43+
proxy_set_header X-Real-IP $remote_addr;
44+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
45+
proxy_set_header X-NginX-Proxy true;
46+
proxy_pass http://sirn-prd-mb-svc-conductor-server.sirn-prd-mb.local:8080/actuator;
47+
proxy_ssl_session_reuse off;
48+
proxy_set_header Host $http_host;
49+
proxy_cache_bypass $http_upgrade;
50+
proxy_redirect off;
51+
}
52+
53+
location /swagger-ui {
54+
proxy_set_header X-Real-IP $remote_addr;
55+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
56+
proxy_set_header X-NginX-Proxy true;
57+
proxy_pass http://sirn-prd-mb-svc-conductor-server.sirn-prd-mb.local:8080/swagger-ui;
58+
proxy_ssl_session_reuse off;
59+
proxy_set_header Host $http_host;
60+
proxy_cache_bypass $http_upgrade;
61+
proxy_redirect off;
62+
}
63+
64+
location /health {
65+
access_log off;
66+
add_header 'Content-Type' 'application/json';
67+
return 200 '{"status":"UP"}';
68+
}
69+
}

0 commit comments

Comments
 (0)