Read configuration from environment
This commit is contained in:
parent
894c85bab9
commit
987c8ccba5
11 changed files with 31 additions and 13 deletions
|
@ -2,7 +2,11 @@ FROM alpine:latest
|
||||||
|
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
|
|
||||||
RUN apk add --update --no-cache nginx openjdk11-jre && \
|
ENV FLING_API_BASE http://localhost:3000
|
||||||
|
ENV FLING_LOG_LEVEL warn
|
||||||
|
ENV FLING_FILESIZE 209715200
|
||||||
|
|
||||||
|
RUN apk add --update --no-cache nginx openjdk11-jre gettext && \
|
||||||
mkdir -p /var/fling/files && \
|
mkdir -p /var/fling/files && \
|
||||||
mkdir -p /tmp/fling && \
|
mkdir -p /tmp/fling && \
|
||||||
wget -O /tmp/fling/service.jar "https://nexus.friedl.net/service/rest/v1/search/assets/download?sort=version&maven.groupId=net.friedl&maven.artifactId=fling&maven.baseVersion=$(echo -n $VERSION | tr [:lower:] [:upper:])&maven.extension=jar" && \
|
wget -O /tmp/fling/service.jar "https://nexus.friedl.net/service/rest/v1/search/assets/download?sort=version&maven.groupId=net.friedl&maven.artifactId=fling&maven.baseVersion=$(echo -n $VERSION | tr [:lower:] [:upper:])&maven.extension=jar" && \
|
||||||
|
@ -14,7 +18,8 @@ RUN apk add --update --no-cache nginx openjdk11-jre && \
|
||||||
mv /tmp/fling/service.jar ./service.jar
|
mv /tmp/fling/service.jar ./service.jar
|
||||||
|
|
||||||
COPY ./etc/nginx/conf.d /etc/nginx/conf.d
|
COPY ./etc/nginx/conf.d /etc/nginx/conf.d
|
||||||
COPY ./entrypoint.sh ./usr/local/bin/entrypoint.sh
|
COPY ./var/www/fling/config.js.template /var/www/fling/config.js.template
|
||||||
|
COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
|
|
||||||
VOLUME /var/fling/
|
VOLUME /var/fling/
|
||||||
|
|
||||||
|
|
|
@ -6,4 +6,6 @@ mkdir /var/run/nginx # nginx fails with /var/run/nginx/nginx.pid not found in al
|
||||||
|
|
||||||
nginx
|
nginx
|
||||||
|
|
||||||
|
cat /var/www/fling/config.js.template | envsubst > /var/www/fling/config.js
|
||||||
|
|
||||||
java ${FL_JVM_OPTS} -jar service.jar
|
java ${FL_JVM_OPTS} -jar service.jar
|
||||||
|
|
5
container/var/www/fling/config.js.template
Normal file
5
container/var/www/fling/config.js.template
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
window['flingconfig'] = {
|
||||||
|
API_BASE: "${FLING_API_BASE}",
|
||||||
|
LOG_LEVEL: "${FLING_LOG_LEVEL}",
|
||||||
|
FILESIZE: "${FLING_FILESIZE}"
|
||||||
|
}
|
5
web/fling/public/config.js
Normal file
5
web/fling/public/config.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
window['flingconfig'] = {
|
||||||
|
API_BASE: "http://localhost:8080",
|
||||||
|
LOG_LEVEL: "warn",
|
||||||
|
FILESIZE: 209715200
|
||||||
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link rel="shortcut icon" href="%PUBLIC_URL%/fling.ico">
|
<link rel="shortcut icon" href="%PUBLIC_URL%/fling.ico">
|
||||||
|
<script src="%PUBLIC_URL%/config.js"></script>
|
||||||
<!--
|
<!--
|
||||||
Notice the use of %PUBLIC_URL% in the tag above.
|
Notice the use of %PUBLIC_URL% in the tag above.
|
||||||
It will be replaced with the URL of the `public` folder during the build.
|
It will be replaced with the URL of the `public` folder during the build.
|
||||||
|
|
|
@ -22,7 +22,7 @@ function FlingArtifactControl(props) {
|
||||||
// the browser downloads the file fine, it also reloads the page, hence
|
// the browser downloads the file fine, it also reloads the page, hence
|
||||||
// loosing all logs and state
|
// loosing all logs and state
|
||||||
let frame = document.createElement("iframe");
|
let frame = document.createElement("iframe");
|
||||||
let url = `${process.env.REACT_APP_API.replace(/\/+$/, '')}/api/artifacts/${props.artifact.id}/data?derivedToken=${token}`;
|
let url = `${window['flingconfig'].API_BASE.replace(/\/+$/, '')}/api/artifacts/${props.artifact.id}/data?derivedToken=${token}`;
|
||||||
log.trace(`Generated download url: ${url}`);
|
log.trace(`Generated download url: ${url}`);
|
||||||
frame.src = url;
|
frame.src = url;
|
||||||
iframeContainer.current.appendChild(frame);
|
iframeContainer.current.appendChild(frame);
|
||||||
|
|
|
@ -82,7 +82,7 @@ export default function Upload() {
|
||||||
stopEvent(ev);
|
stopEvent(ev);
|
||||||
ev.persist();
|
ev.persist();
|
||||||
|
|
||||||
let maxSize = process.env.REACT_APP_FILESIZE;
|
let maxSize = window['flingconfig'].FILESIZE;
|
||||||
let evFiles = fileListToArray(ev.dataTransfer.files);
|
let evFiles = fileListToArray(ev.dataTransfer.files);
|
||||||
|
|
||||||
for (let i = evFiles.length - 1; i >= 0; i--) {
|
for (let i = evFiles.length - 1; i >= 0; i--) {
|
||||||
|
@ -211,7 +211,7 @@ export default function Upload() {
|
||||||
</div>
|
</div>
|
||||||
<div className="upload-command-line m-2">
|
<div className="upload-command-line m-2">
|
||||||
<span className="total-upload">Total Size: {totalSize()}</span>
|
<span className="total-upload">Total Size: {totalSize()}</span>
|
||||||
<span className="total-upload">{`Max: ${prettifyBytes(process.env.REACT_APP_FILESIZE)}`}</span>
|
<span className="total-upload">{`Max: ${prettifyBytes(window['flingconfig'].FILESIZE)}`}</span>
|
||||||
<button className="btn btn-primary btn-upload" onClick={handleUpload}>Upload</button>
|
<button className="btn btn-primary btn-upload" onClick={handleUpload}>Upload</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -16,7 +16,7 @@ export default function FlingUser(props) {
|
||||||
let authClient = new AuthClient();
|
let authClient = new AuthClient();
|
||||||
authClient.deriveToken({ singleUse: true })
|
authClient.deriveToken({ singleUse: true })
|
||||||
.then(token => {
|
.then(token => {
|
||||||
let url = `${process.env.REACT_APP_API.replace(/\/+$/, '')}/api/fling/${props.fling.id}/data?derivedToken=${token}`;
|
let url = `${window['flingconfig'].API_BASE.replace(/\/+$/, '')}/api/fling/${props.fling.id}/data?derivedToken=${token}`;
|
||||||
log.trace(`Generated download url for link: ${url}`);
|
log.trace(`Generated download url for link: ${url}`);
|
||||||
setDownloadUrl(url);
|
setDownloadUrl(url);
|
||||||
})
|
})
|
||||||
|
@ -28,7 +28,7 @@ export default function FlingUser(props) {
|
||||||
// the browser downloads the file fine, it also reloads the page, hence
|
// the browser downloads the file fine, it also reloads the page, hence
|
||||||
// loosing all logs and state
|
// loosing all logs and state
|
||||||
let frame = document.createElement("iframe");
|
let frame = document.createElement("iframe");
|
||||||
let url = `${process.env.REACT_APP_API.replace(/\/+$/, '')}/api/fling/${props.fling.id}/data?derivedToken=${token}`;
|
let url = `${window['flingconfig'].API_BASE.replace(/\/+$/, '')}/api/fling/${props.fling.id}/data?derivedToken=${token}`;
|
||||||
log.trace(`Generated download url: ${url}`);
|
log.trace(`Generated download url: ${url}`);
|
||||||
frame.src = url;
|
frame.src = url;
|
||||||
iframeContainer.current.appendChild(frame);
|
iframeContainer.current.appendChild(frame);
|
||||||
|
|
|
@ -123,7 +123,7 @@ function Upload(props) {
|
||||||
stopEvent(ev);
|
stopEvent(ev);
|
||||||
ev.persist();
|
ev.persist();
|
||||||
|
|
||||||
let maxSize = process.env.REACT_APP_FILESIZE;
|
let maxSize = window['flingconfig'].FILESIZE;
|
||||||
let evFiles = fileListToArray(ev.dataTransfer.files);
|
let evFiles = fileListToArray(ev.dataTransfer.files);
|
||||||
|
|
||||||
for (let i = evFiles.length - 1; i >= 0; i--) {
|
for (let i = evFiles.length - 1; i >= 0; i--) {
|
||||||
|
@ -252,7 +252,7 @@ function Upload(props) {
|
||||||
</div>
|
</div>
|
||||||
<div className="upload-command-line m-2">
|
<div className="upload-command-line m-2">
|
||||||
<span className="total-upload">Total Size: {totalSize()}</span>
|
<span className="total-upload">Total Size: {totalSize()}</span>
|
||||||
<span className="total-upload">{`Max: ${prettifyBytes(process.env.REACT_APP_FILESIZE)}`}</span>
|
<span className="total-upload">{`Max: ${prettifyBytes(window['flingconfig'].FILESIZE)}`}</span>
|
||||||
<button className="btn btn-primary btn-upload" onClick={handleUpload}>Upload</button>
|
<button className="btn btn-primary btn-upload" onClick={handleUpload}>Upload</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -290,7 +290,7 @@ export default function FlingUserList(props) {
|
||||||
// the browser downloads the file fine, it also reloads the page, hence
|
// the browser downloads the file fine, it also reloads the page, hence
|
||||||
// loosing all logs and state
|
// loosing all logs and state
|
||||||
let frame = document.createElement("iframe");
|
let frame = document.createElement("iframe");
|
||||||
let url = `${process.env.REACT_APP_API.replace(/\/+$/, '')}/api/fling/${props.fling.id}/data?derivedToken=${token}`;
|
let url = `${window['flingconfig'].API_BASE.replace(/\/+$/, '')}/api/fling/${props.fling.id}/data?derivedToken=${token}`;
|
||||||
log.trace(`Generated download url: ${url}`);
|
log.trace(`Generated download url: ${url}`);
|
||||||
frame.src = url;
|
frame.src = url;
|
||||||
setInProgress(false);
|
setInProgress(false);
|
||||||
|
|
|
@ -21,8 +21,8 @@ import * as serviceWorker from './serviceWorker';
|
||||||
|
|
||||||
/* Logging Setup */
|
/* Logging Setup */
|
||||||
log.setDefaultLevel(log.levels.TRACE);
|
log.setDefaultLevel(log.levels.TRACE);
|
||||||
if (process.env.REACT_APP_LOGLEVEL) {
|
if (window['flingconfig'].LOG_LEVEL) {
|
||||||
log.setLevel(process.env.REACT_APP_LOGLEVEL);
|
log.setLevel(window['flingconfig'].LOG_LEVEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Store setup */
|
/* Store setup */
|
||||||
|
|
|
@ -9,7 +9,7 @@ import * as fc from '@fling/flingclient';
|
||||||
*/
|
*/
|
||||||
let clientConfig = (token) => {
|
let clientConfig = (token) => {
|
||||||
let config = new fc.ApiClient();
|
let config = new fc.ApiClient();
|
||||||
config.basePath = process.env.REACT_APP_API.replace(/\/+$/, '');
|
config.basePath = window['flingconfig'].API_BASE.replace(/\/+$/, '');
|
||||||
|
|
||||||
token = token || sessionStorage.getItem('token');
|
token = token || sessionStorage.getItem('token');
|
||||||
if (token) { config.authentications['bearer'].accessToken = token; }
|
if (token) { config.authentications['bearer'].accessToken = token; }
|
||||||
|
|
Loading…
Reference in a new issue