Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2.4.2 #462

Merged
merged 98 commits into from
Aug 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
b9069d5
Update auth to be compatible with latest version of radar-auth and ra…
mpgxvii Nov 9, 2023
680886a
Try to get a stub for downstream testing of the managementPortal
Bdegraaf1234 Nov 9, 2023
21efb49
add workflow dispatch as a trigger for the downstream.yml workflow
Bdegraaf1234 Nov 24, 2023
4cfc61d
refactor: all actions into main, and reorganize the docker-compose fi…
Bdegraaf1234 Nov 27, 2023
1170d62
reset the changed application.properties
Bdegraaf1234 Nov 27, 2023
71ca4af
update README.md and adding comments
Bdegraaf1234 Nov 27, 2023
ef8f222
Merge pull request #450 from RADAR-base/downstream_e2e_testing
Bdegraaf1234 Nov 28, 2023
6b61f32
Fix pulling of public key endpoints
mpgxvii Mar 6, 2024
b10a8de
Replaced MEASUREMENT.CREATE permissions
this-Aditya Mar 12, 2024
6b482b3
Bump spring auth version
mpgxvii Mar 13, 2024
c376d8c
Update build.gradle
mpgxvii Mar 14, 2024
0b90337
Fix tests and pmd errors
mpgxvii Mar 14, 2024
cecca7f
Merge pull request #449 from RADAR-base/update-auth
mpgxvii Mar 14, 2024
a556a1e
Changed permission to SUBJECT.UPDATE on PROJECT
this-Aditya Mar 15, 2024
8325222
Merge pull request #454 from this-Aditya/permissions
mpgxvii Mar 18, 2024
97f901e
Retry unauthenticatd Github requests when token is invalid
mpgxvii Mar 19, 2024
775baf9
fix: remove unnecessary project auth check
mpgxvii Mar 19, 2024
55374f6
Updated exception handling via ResponseEntities
this-Aditya Apr 6, 2024
ea59a1d
Eliminating boilerplate code
this-Aditya Apr 6, 2024
f3e591d
feat: allow pulling of custom notification title and body
mpgxvii Apr 10, 2024
8013559
feat: allow enabling and disabling of notifications
mpgxvii Apr 10, 2024
d0376f1
fix: pmd errors when converting to lowercase
mpgxvii Apr 10, 2024
a207a22
fix: ttl calc and checking if notif exists
mpgxvii Apr 11, 2024
fa315b5
fix: ttl calc and checking if notif exists
mpgxvii Apr 11, 2024
5e22cba
Merge branch 'feat/allow-disabled-notifs' of https://github.com/RADAR…
mpgxvii Apr 11, 2024
5981a75
Deleting associated notifications and reminders after task is completed
this-Aditya Apr 13, 2024
15e217b
Merge pull request #459 from this-Aditya/task-completion
mpgxvii Apr 15, 2024
cc664e2
Handling unhandled exceptions
this-Aditya Apr 15, 2024
9f673c4
fix: update cascade type and saving of tasks/notifications
mpgxvii Apr 16, 2024
6a185fb
Merge pull request #457 from this-Aditya/entity-exceptions
yatharthranjan Apr 16, 2024
850419b
fix: revert Githubclient request change
mpgxvii Apr 16, 2024
326c68f
Merge branch 'dev' of https://github.com/RADAR-base/RADAR-Appserver i…
mpgxvii Apr 16, 2024
8e46f5a
fix: add ResponseEntityHandlers for auth exceptions
mpgxvii Apr 16, 2024
caa129b
Merge pull request #455 from RADAR-base/fix/github-token
mpgxvii Apr 16, 2024
f45fc5c
Merge branch 'dev' of https://github.com/RADAR-base/RADAR-Appserver i…
mpgxvii Apr 16, 2024
68bad69
fix: import
mpgxvii Apr 16, 2024
3c0fa89
Merge pull request #460 from RADAR-base/fix/transient-task
mpgxvii Apr 16, 2024
9f93bba
Merge branch 'dev' of https://github.com/RADAR-base/RADAR-Appserver i…
mpgxvii Apr 17, 2024
3d377d4
fix: add NotificationProtocol modes
mpgxvii Apr 17, 2024
77432d6
fix: add Combine notification mode case in NotificationHandlerFactory
mpgxvii Apr 17, 2024
15ab6fd
Merge pull request #458 from RADAR-base/feat/allow-disabled-notifs
mpgxvii Apr 17, 2024
4d26d9e
Bump version t0 2.4.2
mpgxvii Apr 19, 2024
5a0ec20
Add default notificationProtocol value
mpgxvii Apr 22, 2024
8df749f
Merge pull request #463 from RADAR-base/fix/notification-protocol
mpgxvii Apr 30, 2024
83ff27e
Sending the value of body localization key
this-Aditya May 15, 2024
885c9cf
Merge pull request #465 from this-Aditya/loc
yatharthranjan May 15, 2024
6d6f049
fix: ensure subject protocol map has unique values
mpgxvii May 20, 2024
9550850
Merge pull request #466 from RADAR-base/fix/protocol-fetcher
mpgxvii May 21, 2024
b9a8d83
Update users entiy and table unique constraints
mpgxvii May 22, 2024
119c338
fix: update liquibase changelog constrain names
mpgxvii May 24, 2024
3b62834
fix: remove existing fmc_token unique constraint
mpgxvii May 24, 2024
b722d22
Merge pull request #469 from RADAR-base/fix/users
mpgxvii May 24, 2024
00ad614
Merge pull request #471 from RADAR-base/release-2.4.2
mpgxvii Jun 10, 2024
3767822
Add emailAddress to user table
pvannierop Jul 4, 2024
692f4c8
Impl. message transmitters
pvannierop Jul 2, 2024
95c333c
Throw error when notifications via email enabled and no email provide…
pvannierop Jul 4, 2024
654b316
Fix PMD errors
pvannierop Jul 5, 2024
1ae834f
Add test SMTP server to application-dev.properties
pvannierop Jul 5, 2024
ccf73a7
Add EmailNotificationTransmitterTest
pvannierop Jul 5, 2024
e87cece
Add comment on mail configuration
pvannierop Jul 5, 2024
9f7249f
feat: email notification per task in protocol
yatharthranjan Jul 5, 2024
e782888
Fix: emails in reminders
yatharthranjan Jul 5, 2024
2913061
Disable email notifications by default and rename properties
pvannierop Jul 8, 2024
21230f5
Log warnings when email address is missing
pvannierop Jul 8, 2024
f5d4c90
Remove UserService import from MessageJob
pvannierop Jul 8, 2024
94f434f
Change error handling in MessageJob
pvannierop Jul 8, 2024
979edb5
Use correct 'from' email field
pvannierop Jul 8, 2024
cc61090
Restore notification.isEmailEnabled()
pvannierop Jul 8, 2024
b64d89a
Update exception handling by MessageJob
pvannierop Jul 8, 2024
a2808c9
Move try to higher level
pvannierop Jul 8, 2024
6565c4d
Clean whitespace
pvannierop Jul 8, 2024
eb9fcf9
Add MessageJobTest
pvannierop Jul 8, 2024
2343690
Fix: disable pmdTest and fix PMD errors
yatharthranjan Jul 9, 2024
04e7edd
Merge pull request #474 from RADAR-base/notifications-via-email
yatharthranjan Jul 9, 2024
06b0c46
Impl. file upload endpoint
pvannierop May 31, 2024
9eb55a8
Add '/files' to the REST path for file upload
pvannierop Jul 2, 2024
aabf53a
Change to CREATE MEASUREMENT permission for upload endpoint
pvannierop Jul 2, 2024
b2cb1b8
Implement per-day folder and timestamp as part of filename
pvannierop Jul 2, 2024
1e4523e
Fix PMD tests
pvannierop Jul 3, 2024
9cb5ee5
Return path to bucket root in HTTP response
pvannierop Jul 3, 2024
7ec460c
Throw custom exceptions handled by ResponseEntityExceptionHandler
pvannierop Jul 3, 2024
d1a9ab9
Add 'radar.' prefix for storage properties
pvannierop Jul 8, 2024
f1523af
Add Location to exposed headers in CORS
pvannierop Jul 9, 2024
d901224
Fixed addition of attributes when creating new user
this-Aditya Jul 11, 2024
a43ee84
Merge pull request #475 from RADAR-base/attributes
yatharthranjan Jul 12, 2024
28132f4
Refactor StoragePath
pvannierop Jul 9, 2024
a679464
Add @ResponseStatus on file storage exceptions
pvannierop Jul 16, 2024
680f86f
Add docs on enabling notifications via email
pvannierop Jul 17, 2024
98f924f
Add optional title and text elements to email protocol
pvannierop Jul 17, 2024
96b305e
Fix email_address column name
pvannierop Jul 17, 2024
37cf3e0
Add emailTitle and emailBody columns
pvannierop Jul 17, 2024
d0a2a97
Add missing email address mapping in UserConverter
pvannierop Jul 17, 2024
20f1cc6
Rename email field in FcmUserDto
pvannierop Jul 17, 2024
03f7c3b
Update docs on enabling notifications via email
pvannierop Jul 23, 2024
7550bd4
Correct email column name
pvannierop Jul 25, 2024
d559e0f
Add lazy init of S3 client
pvannierop Jul 26, 2024
9e45eb7
Merge pull request #470 from RADAR-base/file-upload-endpoint
mpgxvii Jul 30, 2024
7f37c89
Merge pull request #476
pvannierop Aug 1, 2024
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
49 changes: 47 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Continuous integration, including test and integration test
name: CI

# Run in master and dev branches and in all pull requests to those branches
# Run in master and dev branches and in all pull requests to those branches, as well as on workflow dispatch for downstream testing
on:
workflow_dispatch:
push:
branches: [ master, dev ]
pull_request:
Expand Down Expand Up @@ -33,13 +34,15 @@ jobs:
- name: Compile code
run: ./gradlew assemble

# Use 'docker compose' instead of 'docker-compose' to use v2
- name: Setup docker services
run: |
sudo mkdir -p /usr/local/var/lib/radar/appserver/logs/
sudo chown -R $(whoami) /usr/local/var/lib/radar/appserver/logs
docker-compose -f src/integrationTest/resources/docker/docker-compose.yml up -d postgres managementportal
docker compose -f src/integrationTest/resources/docker/non_appserver/docker-compose.yml up -d
# Wait for services to start up.
sleep 50

- name: Install gpg secret key
run: |
cat <(echo -e "${{ secrets.GPG_SECRET_KEY }}") | gpg --batch --import
Expand All @@ -60,10 +63,52 @@ jobs:
if-no-files-found: ignore
retention-days: 5

# Build and test the code against the :dev docker image of parent repositories
test-downstream:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# only run this on 'ready for review' PRs or when triggered by an upstream job
if: github.event.pull_request.draft == false || github.event_name == 'workflow_dispatch'

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3

- uses: actions/setup-java@v3
with:
java-version: 17
distribution: temurin

# Use 'docker compose' instead of 'docker-compose' to use v2
- name: Setup docker services (:dev)
run: |
sudo mkdir -p /usr/local/var/lib/radar/appserver/logs/
sudo chown -R $(whoami) /usr/local/var/lib/radar/appserver/logs
# call docker compose without args to include the override file
cd src/integrationTest/resources/docker/appserver_downstream
docker compose up -d
# Wait for services to start up.
sleep 50

- name: Install gpg secret key
run: |
cat <(echo -e "${{ secrets.GPG_SECRET_KEY }}") | gpg --batch --import
gpg --list-secret-keys --keyid-format LONG

- name: Decrypt google application credentials
run: |
gpg --pinentry-mode loopback --local-user "Yatharth Ranjan" --batch --yes --passphrase "${{ secrets.GPG_SECRET_KEY_PASSPHRASE }}" --output src/integrationTest/resources/google-credentials.json --decrypt src/integrationTest/resources/google-credentials.enc.gpg

# Gradle check
- name: Check
run: GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/src/integrationTest/resources/google-credentials.json ./gradlew check

# Check that the docker image builds correctly
docker:
# The type of runner that the job will run on
runs-on: ubuntu-latest
if: github.event_name != 'workflow_dispatch'

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
Expand Down
351 changes: 262 additions & 89 deletions README.md

Large diffs are not rendered by default.

12 changes: 9 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ apply plugin: 'io.spring.dependency-management'
apply plugin: 'scala'

group = 'org.radarbase'
version = '2.4.1'
version = '2.4.2'

java {
toolchain {
Expand All @@ -24,7 +24,6 @@ java {

repositories {
mavenCentral()
mavenLocal()
maven { url = "https://oss.sonatype.org/content/repositories/snapshots" }
}

Expand All @@ -39,9 +38,10 @@ ext {
springDocVersion = '2.2.0'
lombokVersion = '1.18.26'
junit5Version = '5.9.2'
radarSpringAuthVersion = '1.2.0'
radarSpringAuthVersion = '1.2.1'
springSecurityVersion = '6.0.2'
hibernateValidatorVersion = '8.0.0.Final'
minioVersion = '8.5.10'
}

sourceSets {
Expand All @@ -61,10 +61,12 @@ dependencies {
implementation('org.springframework.boot:spring-boot-starter-quartz')
implementation('org.springframework.boot:spring-boot-starter-security')
implementation('org.springframework.boot:spring-boot-starter-actuator')
implementation('org.springframework.boot:spring-boot-starter-mail')
implementation group: "org.springframework.security", name: "spring-security-config", version: springSecurityVersion
implementation('org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:' + springBootVersion)
implementation('org.springframework.security.oauth:spring-security-oauth2:' + springOauth2Version)
runtimeOnly("org.hibernate.validator:hibernate-validator:$hibernateValidatorVersion")
implementation("io.minio:minio:$minioVersion")

// Open API spec
implementation(group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: springDocVersion)
Expand Down Expand Up @@ -207,3 +209,7 @@ tasks.named("dependencyUpdates").configure {
isNonStable(it.candidate.version)
}
}

pmd {
sourceSets = [sourceSets.main]
}
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
@@ -1 +1 @@
rootProject.name = 'appserver'
rootProject.name = 'appserver'
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.web.client.ResourceAccessException;

@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
Expand Down Expand Up @@ -158,20 +159,23 @@ public void unauthorisedCreateNotificationsForUser() {
HttpEntity<FcmNotificationDto> notificationDtoHttpEntity =
new HttpEntity<>(fcmNotificationDto, HEADERS);

ResponseEntity<FcmNotificationDto> notificationDtoResponseEntity =
restTemplate.exchange(
createURLWithPort(
port,
ProjectEndpointAuthTest.PROJECT_PATH
+ UserEndpointAuthTest.DEFAULT_PROJECT
+ UserEndpointAuthTest.USER_PATH
+ DEFAULT_USER
+ NOTIFICATION_PATH),
HttpMethod.POST,
notificationDtoHttpEntity,
FcmNotificationDto.class);

assertEquals(HttpStatus.UNAUTHORIZED, notificationDtoResponseEntity.getStatusCode());
ResponseEntity<FcmNotificationDto> notificationDtoResponseEntity = null;
try {
notificationDtoResponseEntity =
restTemplate.exchange(
createURLWithPort(
port,
ProjectEndpointAuthTest.PROJECT_PATH
+ UserEndpointAuthTest.DEFAULT_PROJECT
+ UserEndpointAuthTest.USER_PATH
+ DEFAULT_USER
+ NOTIFICATION_PATH),
HttpMethod.POST,
notificationDtoHttpEntity,
FcmNotificationDto.class);
} catch (ResourceAccessException e) {
assertEquals(notificationDtoResponseEntity, null);
}
}

@Test
Expand Down Expand Up @@ -295,4 +299,4 @@ public void forbiddenViewNotificationsForOtherProject() {

assertEquals(HttpStatus.UNAUTHORIZED, notificationDtoResponseEntity.getStatusCode());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.web.client.ResourceAccessException;

@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestMethodOrder(OrderAnnotation.class)
@SuppressWarnings("PMD.DataflowAnomalyAnalysis")
public class ProjectEndpointAuthTest {

public static final String PROJECT_PATH = "/projects";
Expand All @@ -70,13 +72,17 @@ public void unauthorisedCreateProject() {
ProjectDto projectDto = new ProjectDto().setProjectId("radar");
HttpEntity<ProjectDto> projectEntity = new HttpEntity<>(projectDto, HEADERS);

ResponseEntity<ProjectDto> responseEntity =
restTemplate.exchange(
createURLWithPort(port, PROJECT_PATH),
HttpMethod.POST,
projectEntity,
ProjectDto.class);
assertEquals(HttpStatus.UNAUTHORIZED, responseEntity.getStatusCode());
ResponseEntity<ProjectDto> responseEntity = null;
try {
responseEntity =
restTemplate.exchange(
createURLWithPort(port, PROJECT_PATH),
HttpMethod.POST,
projectEntity,
ProjectDto.class);
} catch (ResourceAccessException e) {
assertEquals(responseEntity, null);
}
}

@Test
Expand Down Expand Up @@ -167,4 +173,4 @@ public void getForbiddenProjectWithAuth() {
// Access denied as the user has only access to the project that it is part of.
assertEquals(HttpStatus.FORBIDDEN, responseEntity.getStatusCode());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.web.client.ResourceAccessException;

@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
Expand Down Expand Up @@ -109,15 +110,18 @@ public void unauthorisedViewSingleUser() {
public void unauthorisedCreateUser() {
HttpEntity<FcmUserDto> userDtoHttpEntity = new HttpEntity<>(userDto, HEADERS);

ResponseEntity<FcmUserDto> responseEntity =
restTemplate.exchange(
createURLWithPort(
port, ProjectEndpointAuthTest.PROJECT_PATH + DEFAULT_PROJECT + USER_PATH),
HttpMethod.POST,
userDtoHttpEntity,
FcmUserDto.class);

assertEquals(HttpStatus.UNAUTHORIZED, responseEntity.getStatusCode());
ResponseEntity<FcmUserDto> responseEntity = null;
try {
responseEntity =
restTemplate.exchange(
createURLWithPort(
port, ProjectEndpointAuthTest.PROJECT_PATH + DEFAULT_PROJECT + USER_PATH),
HttpMethod.POST,
userDtoHttpEntity,
FcmUserDto.class);
} catch (ResourceAccessException e) {
assertEquals(responseEntity, null);
}
}

@Test
Expand Down Expand Up @@ -202,4 +206,4 @@ public void viewAllUsers() {
// This should return a filtered list of users for which the token has access.
assertEquals(HttpStatus.OK, responseEntity.getStatusCode());
}
}
}
4 changes: 2 additions & 2 deletions src/integrationTest/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ spring.jpa.hibernate.ddl-auto=none
spring.datasource.username=postgres
spring.datasource.password=radar
spring.datasource.url=jdbc:postgresql://localhost:5432/radar
#jdbc:hsqldb:hsql://localhost:9001/appserver for running hsql separately in dev or testing
# jdbc:hsqldb:hsql://localhost:9001/appserver for running hsql separately in dev or testing
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
spring.jpa.properties.hibernate.generate_statistics=false
spring.jpa.properties.hibernate.jdbc.batch_size=20
Expand Down Expand Up @@ -87,7 +87,7 @@ spring.datasource.hikari.leakDetectionThreshold=120000
# OAuth2 Resource Server Security
security.oauth2.resource.id=res_AppServer
security.radar.managementportal.enabled=true
security.radar.managementportal.url=http://localhost:8081
security.radar.managementportal.url=http://localhost:8081/managementportal
# OAuth2 Client Security
#security.oauth2.client.clientId=
#security.oauth2.client.clientSecret=
Expand Down
22 changes: 22 additions & 0 deletions src/integrationTest/resources/docker/appserver.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
version: "3.8"

services:
appserver:
image: radarbase/radar-appserver
build: ../../../..
restart: always
ports:
- "8080:8080"
volumes:
- ../radar-is.yml:/resources/radar-is.yml
- ../../../../logs/:/var/log/radar/appserver/
environment:
JDK_JAVA_OPTIONS: -Xmx4G -Djava.security.egd=file:/dev/./urandom
FCMSERVER_SENDERID: "1043784930865"
FCMSERVER_SERVERKEY: "AAAA8wZuFjE:APA91bGpJQ3Sft0mZAaVMjDJGNLjFsdDLTo-37ZN69r4lKlHiRN78t4bCfkNKcXG5c9cJg-eGtWB7FqceQUDVtf7B1Zvw_2ycynqwKe2YqXFeyaq83Gf0R3AS1EKSWFS60GCr8eUEliz"
RADAR_ADMIN_USER: "radar"
RADAR_ADMIN_PASSWORD: "radar"
SPRING_APPLICATION_JSON: '{"spring":{"boot":{"admin":{"client":{"url":"http://spring-boot-admin:1111","username":"radar","password":"appserver"}}}}}'
RADAR_IS_CONFIG_LOCATION: "/resources/radar-is.yml"
SPRING_BOOT_ADMIN_CLIENT_INSTANCE_NAME: radar-appserver
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/radar
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# start the dockerstack using a prebuilt image pulled from dockerhub. This stack does not work without adding GOOGLE_APPLICATION_CREDENTIALS
version: "3.8"

include:
- "../non_appserver/docker-compose.yml"

services:
appserver:
extends:
file: ../appserver.yml
service: appserver
networks:
- db
- default
- admin
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: "3.8"

services:
managementportal:
extends:
file: ../managementportal.yml
service: managementportal
image: radarbase/management-portal:dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# start the supporting dockerstack using the :dev image of the managementportal dependency.
version: "3.8"

include:
- "../non_appserver/docker-compose.yml"

# This file should be called in conjunction with the accompanying docker-compose.override.yml file
# This can be done by navigating to the directory with both files and calling 'docker compose up -d'
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# start the dockerstack using a locally built docker image of the appserver. This stack does not work without adding GOOGLE_APPLICATION_CREDENTIALS
version: "3.8"

include:
- "../non_appserver/docker-compose.yml"

services:
appserver:
extends:
file: ../appserver.yml
service: appserver
image: appserver
networks:
- db
- default
- admin
Loading
Loading