Skip to content

[online] Revert GENERATOR_HOST explicit setting #3287

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

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 4 additions & 3 deletions modules/openapi-generator-online/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ WORKDIR /generator

COPY target/openapi-generator-online.jar /generator/openapi-generator-online.jar

ENV GENERATOR_HOST=http://localhost
# GENERATOR_HOST can be used to determine the target location of a download link.
# The default value asumes binding to host via: docker -p 8080:8080 image_name
ENV GENERATOR_HOST=http://localhost:8080
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand. Do we keep GENERATOR_HOST?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cbornet GENERATOR_HOST is still used here:

This isn't "correct" and will need to be changed. The previous value here would be incorrect for all invocations unless bound to port 80, which I believe requires super user privileges. This change at least causes the variable to match the exposed port.

Many people try out docker images by binding to random host ports (-P), and when doing this… GENERATOR_HOST will be useless and the file download link generation won't work.

This PR limits focus to get the proxying host setting working on the server. I can look at the other work later.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created #3288 to address this other concern.


EXPOSE 8080

CMD ["java", "-jar", "/generator/openapi-generator-online.jar"]

CMD ["java", "-jar", "/generator/openapi-generator-online.jar" ]
47 changes: 43 additions & 4 deletions modules/openapi-generator-online/README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,54 @@
# OpenAPI generated server

Spring Boot Server
A Spring Boot Server application which hosts a client/server generator API.


## Overview

This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
By using the [OpenAPI-Spec](https://openapis.org), you can easily generate a server stub.
By using the [OpenAPI-Spec](https://openapis.org), you can easily generate a server stub or one of 100+ client packages.

This is an example of building a OpenAPI-enabled server in Java using the SpringBoot framework.

The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox)

Start your server as a simple java application
## Building

Refer to [root README](../../README.md) for build directions.

## Running

### Via command line

Running is as simple as:

```
java -jar ./target/openapi-generator-online.jar
```

This exposes the API on local port 8080.

Springfox supports configuration of the "host" value in the output OpenAPI document by setting the `Host` HTTP header in the request.
To set this explicitly, pass the system property `springfox.documentation.swagger.v2.host` with the desired host. For example:

```
java -Dspringfox.documentation.swagger.v2.host=example.com:8888 -jar ./target/openapi-generator-online.jar
```

### Via Docker

After building from source, change to this module directory (`cd modules/openapi-generator-online`) and build the docker image:

```
docker build -t openapitools/openapi-generator-online:latest .
```

Now, run the docker image:

```
docker run -d -p 8888:8080 \
-e GENERATOR_HOST=http://localhost:8888 \
openapitools/openapi-generator-online
```

Change default port value in application.properties
The `GENERATOR_HOST` variable is used here to ensure download links generated by the API refer to the proper API location.
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ ApiInfo apiInfo() {

String version = properties.getProperty("version", "unknown");


return new ApiInfoBuilder()
.title("OpenAPI Generator Online")
.description("This is an online openapi generator server. You can find out more at https://github.com/OpenAPITools/openapi-generator.")
Expand All @@ -66,18 +65,7 @@ ApiInfo apiInfo() {

@Bean
public Docket customImplementation(){
String host;
try {
String baseUrl = System.getenv("GENERATOR_HOST");
if (baseUrl == null) {
baseUrl = System.getProperty("generator.host", "http://localhost");
}
host = new URI(baseUrl).getHost();
} catch (URISyntaxException e) {
host = "";
}
return new Docket(DocumentationType.SWAGGER_2)
.host(host)
.select()
.apis(RequestHandlerSelectors.basePackage("org.openapitools.codegen.online.api"))
.build()
Expand Down