Skip to content

Commit e151ff8

Browse files
author
Sebastian Lohr
committed
first commit
0 parents  commit e151ff8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1331
-0
lines changed

.gitignore

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
HELP.md
2+
target/
3+
!.mvn/wrapper/maven-wrapper.jar
4+
!**/src/main/**/target/
5+
!**/src/test/**/target/
6+
7+
### STS ###
8+
.apt_generated
9+
.classpath
10+
.factorypath
11+
.project
12+
.settings
13+
.springBeans
14+
.sts4-cache
15+
16+
### IntelliJ IDEA ###
17+
.idea
18+
*.iws
19+
*.iml
20+
*.ipr
21+
22+
### NetBeans ###
23+
/nbproject/private/
24+
/nbbuild/
25+
/dist/
26+
/nbdist/
27+
/.nb-gradle/
28+
build/
29+
!**/src/main/**/build/
30+
!**/src/test/**/build/
31+
32+
### VS Code ###
33+
.vscode/
34+
/mvnw.cmd
35+
/mvnw

Insomnia/API_Calls.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"_type":"export","__export_format":4,"__export_date":"2023-05-08T09:40:06.454Z","__export_source":"insomnia.desktop.app:v2023.2.0","resources":[{"_id":"req_109faae75a2c432f94c94d6730a58e0e","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535446830,"created":1683208706845,"url":"http://localhost:8080/graphql","name":"gRPC Random","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"nothing\"\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541892.3047,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_c268068c9803491cb48ee00b5a3f7315","parentId":"fld_c4ac8649d3ff4263b37a283151604626","modified":1683535422357,"created":1683535422357,"name":"Client","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1683535422357,"_type":"request_group"},{"_id":"fld_c4ac8649d3ff4263b37a283151604626","parentId":"wrk_682a3dd622414e0194b327705b13eb6e","modified":1682583899001,"created":1682326264858,"name":"API_Test","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1682326264858,"_type":"request_group"},{"_id":"wrk_682a3dd622414e0194b327705b13eb6e","parentId":null,"modified":1678284032289,"created":1678284032289,"name":"New Document","description":"","scope":"design","_type":"workspace"},{"_id":"req_7ab45a0b55004ad9b1cb7b7c78cb3304","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535488068,"created":1683265490749,"url":"http://localhost:8080/grpc","name":"gRPC ID","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"ID\",\n\t\"number\": 112\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541890.7422,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_3fe90ad16cc24aa78f55b04db8d1beaa","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535513527,"created":1683265429426,"url":"http://localhost:8080/grpc","name":"gRPC Amount","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"AMOUNT\",\n\t\"number\": 1000\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541886.836,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_387c40d5cac941b9a9d3ec56f330beed","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535500448,"created":1683205197053,"url":"http://localhost:8080/graphql","name":"GraphQL Random","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"NOTHING\"\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541882.9297,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_49dda720b4634cf5b04806128ec61e9d","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535461575,"created":1683202004514,"url":"http://localhost:8080/graphql","name":"GraphQL ID","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"ID\",\n\t\"number\": 101\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541879.8047,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_1ad9322d9da54095bfecf604af1c27dc","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535505498,"created":1683205153857,"url":"http://localhost:8080/graphql","name":"GraphQL Amount","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"AMOUNT\",\n\t\"number\": 1000\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541878.2422,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_84ad59d4917443c885a2b1fee2d007f6","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535524280,"created":1683200030461,"url":"http://localhost:8080/rest","name":"Rest Random","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"NOTHING\"\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541877.461,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_b5f0b9a4b0154158be3dc22937c783db","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535531039,"created":1683200001888,"url":"http://localhost:8080/rest","name":"Rest ID","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"ID\",\n\t\"number\": 202\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541877.0703,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_37e65b009d1f4e0291cc571ec481b7cc","parentId":"fld_c268068c9803491cb48ee00b5a3f7315","modified":1683535537216,"created":1683184429364,"url":"http://localhost:8080/rest","name":"Rest Amount","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"method\": \"AMOUNT\",\n\t\"number\": 1000\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683073541876.6797,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_ec0ebd87836a441abc7979c3105136c9","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683535704773,"created":1683535584512,"url":"http://localhost:8282/beer","name":"Beer Random","description":"","method":"GET","body":{},"parameters":[],"headers":[{"id":"pair_ec12f596de6a49bbb337a41674377202","name":"","value":"","description":""}],"authentication":{},"metaSortKey":-1683304426906.3867,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_7e9a6636217b4bb9808adaadda0b8cb1","parentId":"fld_c4ac8649d3ff4263b37a283151604626","modified":1683535311940,"created":1683535311940,"name":"Server","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1683535311940,"_type":"request_group"},{"_id":"req_4e23bbeacaa24bc8b39d860e4f1698b2","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683535696821,"created":1682492281746,"url":"http://localhost:8282/beer/9","name":"Beer ID","description":"","method":"GET","body":{},"parameters":[],"headers":[{"id":"pair_ec12f596de6a49bbb337a41674377202","name":"","value":"","description":""}],"authentication":{},"metaSortKey":-1683304426906.0938,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_e8583f9ff76e48778f200431f12494c7","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683535709070,"created":1682425321514,"url":"http://localhost:8282/beers/5","name":"Beers Amount","description":"","method":"GET","body":{},"parameters":[],"headers":[{"id":"pair_ec12f596de6a49bbb337a41674377202","name":"","value":"","description":""}],"authentication":{},"metaSortKey":-1683304426905.8008,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_5c208eea553f4d7488699829ea0b7773","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683535711434,"created":1683205242972,"url":"http://localhost:8282/graphql","name":"Beer Random","description":"","method":"POST","body":{"mimeType":"application/graphql","text":"{\"query\":\"query {\\n\\tbeer{\\n\\t\\tid\\n\\t\\tname\\n\\t\\tyeast\\n\\t\\tstyle\\n\\t\\thop\\n\\t\\tmalt\\n\\t}\\n}\"}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683304426904.4336,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_dcf4e45353b649358c9bff1c7f2332f4","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683535713489,"created":1682432936031,"url":"http://localhost:8282/graphql","name":"Beer with id","description":"","method":"POST","body":{"mimeType":"application/graphql","text":"{\"query\":\"query {\\n\\tbeerID(id: 12231){\\n\\t\\tid\\n\\t\\tname\\n\\t\\tyeast\\n\\t\\tstyle\\n\\t\\thop\\n\\t\\tmalt\\n\\t}\\n}\"}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683304426891.1523,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_b6e7f8f5844f48bead127470c19dc7e4","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683535716315,"created":1682492190365,"url":"http://localhost:8282/graphql","name":"Beer Amount","description":"","method":"POST","body":{"mimeType":"application/graphql","text":"{\"query\":\"query {\\n\\tbeers(amount: 200) {\\n\\t\\tid\\n\\t\\tname\\n\\t\\tyeast\\n\\t\\tstyle\\n\\t\\thop\\n\\t\\tmalt\\n\\t}\\n}\\n\"}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1683304426878.6523,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"greq_7c11981c00854e7c960ef91166741af5","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683538471549,"created":1682492945005,"url":"localhost:9090","name":"Beer with id","description":"","protoFileId":"","protoMethodName":"/gRPC.BeerService/getBeer","metadata":[],"body":{"text":"{\n\t\"id\":10\n}"},"metaSortKey":-1683304426866.1523,"isPrivate":false,"_type":"grpc_request"},{"_id":"greq_8b455692216047668af90aeb1dec9ef6","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683538516405,"created":1682587418575,"url":"localhost:9090","name":"Beer Amount","description":"","protoFileId":"","protoMethodName":"/gRPC.BeerService/getBeers","metadata":[],"body":{"text":"{\n\"amount\": 10\n}"},"metaSortKey":-1683304426816.1523,"isPrivate":false,"_type":"grpc_request"},{"_id":"greq_5474f87b93de4071a9864309cf1bf796","parentId":"fld_7e9a6636217b4bb9808adaadda0b8cb1","modified":1683535660867,"created":1683184213073,"url":"localhost:9090","name":"Beer Random","description":"","protoFileId":"","protoMethodName":"/de.doubleslash.api_test.gRPC.BeerService/getBeer","metadata":[],"body":{"text":"{}"},"metaSortKey":-1683304426766.1523,"isPrivate":false,"_type":"grpc_request"},{"_id":"env_a0714c97fa57e197b7db221c58da5cb95db47d86","parentId":"wrk_682a3dd622414e0194b327705b13eb6e","modified":1678284032300,"created":1678284032300,"name":"Base Environment","data":{},"dataPropertyOrder":null,"color":null,"isPrivate":false,"metaSortKey":1678284032300,"_type":"environment"},{"_id":"jar_a0714c97fa57e197b7db221c58da5cb95db47d86","parentId":"wrk_682a3dd622414e0194b327705b13eb6e","modified":1681821006856,"created":1678284032305,"name":"Default Jar","cookies":[{"key":"session_token","value":"eyJhbGciOiJIUzI1NiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAAAKtWyiwuVrJSyq30LC4uTS1S0lHKTCxRsjI0szC0MDI0MDDTUSotTi3KS8xNBSpzcfX1V6oFADU8QwA1AAAA.nQVALoa-BFlSwfuMO0bRUOBJg2otnR3oCxOK93yFypo","domain":"localhost","path":"/","secure":true,"httpOnly":true,"extensions":["SameSite=None"],"hostOnly":true,"creation":"2023-04-18T12:30:06.855Z","lastAccessed":"2023-04-18T12:30:06.855Z","id":"7052776757276844"}],"_type":"cookie_jar"},{"_id":"spc_307d4eaf78984d11a2d9b369d5a0711c","parentId":"wrk_682a3dd622414e0194b327705b13eb6e","modified":1683530849074,"created":1678284032290,"fileName":"New Document","contents":"","contentType":"yaml","_type":"api_spec"},{"_id":"uts_562e41c6a1dd4c3dbc2b6dd2945275d7","parentId":"wrk_682a3dd622414e0194b327705b13eb6e","modified":1678284032316,"created":1678284032316,"name":"Example Test Suite","_type":"unit_test_suite"},{"_id":"pd_a7bbfe28f35d495aaa205e67136895b9","parentId":"wrk_682a3dd622414e0194b327705b13eb6e","modified":1683535939646,"created":1683535939646,"name":"proto","_type":"proto_directory"},{"_id":"pf_d11952219a5f42d79765c964476a03d3","parentId":"pd_a7bbfe28f35d495aaa205e67136895b9","modified":1683535943091,"created":1683535939637,"name":"BeerService.proto","protoText":"syntax = \"proto3\";\r\noption java_multiple_files=true;\r\npackage gRPC;\r\n\r\nmessage BeerIdRequest {\r\n int32 id = 1;\r\n}\r\n\r\nmessage BeersRequest {\r\n int32 amount = 1;\r\n}\r\n\r\nmessage BeersResponse {\r\n repeated BeerMessage beer = 1;\r\n}\r\n\r\nmessage BeerMessage {\r\n int32 id = 1;\r\n string name = 2;\r\n string hop = 3;\r\n string yeast = 4;\r\n string mal = 5;\r\n string style = 6;\r\n}\r\n\r\nmessage Empty {}\r\n\r\nservice BeerService {\r\n rpc getBeer(Empty) returns (BeerMessage);\r\n rpc getBeerWithId(BeerIdRequest) returns (BeerMessage);\r\n rpc getBeers(BeersRequest) returns (BeersResponse);\r\n}","_type":"proto_file"}]}

README.md

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# API_Test
2+
3+
## Usage
4+
- The server listens on port 8282
5+
- The client listens on port 8080
6+
- both projects have a swagger ui on the root endpoint
7+
8+
9+
The insomnia file contains API calls that can be used to request endpoints from both the client and server.
10+
These requests are organized into two separate folders: one for the client and one for the server.
11+
Each API technology (REST, GraphQL, and gRPC) is represented by three endpoints provided by both the server and client:
12+
13+
|Method|Description|
14+
|-----|-------------|
15+
|Random|Returns a random beer|
16+
|Amount|Returns the amount of beer|
17+
|ID|Returns a beer with that id|
18+
19+
The data is consumed from the JavaFaker Library: https://github.com/DiUS/java-faker
20+
21+
### Server API
22+
#### REST
23+
24+
Endpoints:
25+
26+
|Endpoint|Description|
27+
|-----|-------------|
28+
|http://localhost:8282/beer|Returns a random beer|
29+
|http://localhost:8282/beers/{amount}|Amount of Beers to be returned|Returns the amount of beer|
30+
|http://localhost:8282/beer/{id}|Returns a beer with that id|
31+
32+
#### GraphQL
33+
Endpoint: http://localhost:8282/graphql
34+
35+
Returns a random beer
36+
```
37+
query {
38+
beer{
39+
id
40+
name
41+
yeast
42+
style
43+
hop
44+
malt
45+
}
46+
}
47+
```
48+
49+
Amount of Beers to be returned|Returns the amount of beer
50+
```
51+
query {
52+
beerID(amount: 200){
53+
id
54+
name
55+
yeast
56+
style
57+
hop
58+
malt
59+
}
60+
}
61+
```
62+
63+
Returns a beer with that id
64+
```
65+
query {
66+
beers(id: 12231) {
67+
id
68+
name
69+
yeast
70+
style
71+
hop
72+
malt
73+
}
74+
}
75+
```
76+
77+
#### grpc
78+
79+
|Endpoint|Description|
80+
|-----|-------------|
81+
|getBeerWithId|Returns a random beer|
82+
|getBeers|Amount of Beers to be returned|Returns the amount of beer|
83+
|getBeerWithId|Returns a beer with that id|
84+
85+
### Client API
86+
87+
Endpoint: http://localhost:8080/{grpc|graphql|rest}
88+
89+
Payload:
90+
91+
```
92+
{
93+
"method": "AMOUNT|NOTHING|ID",
94+
"number": <number>
95+
}
96+
```
97+
98+
|Method|Number|Description|
99+
|------|------|-----------|
100+
|NOTHING|-|Returns a random beer|
101+
|Amount|Amount of Beers to be returned|Returns the amount of beer|
102+
|ID|ID of a Beer|Returns a beer with that id|
103+
104+
## Architecture
105+
106+
The server offers information about beer through REST, GraphQL, and gRPC. The client utilizes these endpoints and records the time it takes to receive a response.
107+
The client's endpoints initiate a call to the server, during which the client measures the time it takes and records this information, along with the payload from the server.
108+
109+
110+
## Project setup
111+
112+
### Run with Docker
113+
114+
First, you need to build the project with maven:
115+
```
116+
mvn clean install -P api_test
117+
```
118+
119+
Then just run the docker-compose:
120+
```
121+
docker-compose up -d
122+
```

client/.gitignore

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
HELP.md
2+
target/
3+
!.mvn/wrapper/maven-wrapper.jar
4+
!**/src/main/**/target/
5+
!**/src/test/**/target/
6+
7+
### STS ###
8+
.apt_generated
9+
.classpath
10+
.factorypath
11+
.project
12+
.settings
13+
.springBeans
14+
.sts4-cache
15+
16+
### IntelliJ IDEA ###
17+
.idea
18+
*.iws
19+
*.iml
20+
*.ipr
21+
22+
### NetBeans ###
23+
/nbproject/private/
24+
/nbbuild/
25+
/dist/
26+
/nbdist/
27+
/.nb-gradle/
28+
build/
29+
!**/src/main/**/build/
30+
!**/src/test/**/build/
31+
32+
### VS Code ###
33+
.vscode/
58.5 KB
Binary file not shown.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# https://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip
18+
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar

client/Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM openjdk:17-jdk
2+
3+
WORKDIR /app
4+
5+
COPY target/*.jar /app/client.jar
6+
7+
CMD ["java", "-jar", "/app/client.jar"]
8+
9+
EXPOSE 8080

client/local.env

Whitespace-only changes.

0 commit comments

Comments
 (0)