parent
8b1e11c1e3
commit
a38603be2c
7
.env
7
.env
|
@ -1,8 +1,5 @@
|
||||||
REACT_APP_TUITIO_URL=http://localhost:5063
|
REACT_APP_TUITIO_URL=http://#######
|
||||||
# REACT_APP_TUITIO_URL=https://lab.code-rove.com/tuitio
|
REACT_APP_NETWORK_RESURRECTOR_API_URL=http://#######
|
||||||
|
|
||||||
REACT_APP_NETWORK_RESURRECTOR_API_URL=http://localhost:5064
|
|
||||||
#REACT_APP_NETWORK_RESURRECTOR_API_URL=https://lab.code-rove.com/network-resurrector-api
|
|
||||||
|
|
||||||
#600000 milliseconds = 10 minutes
|
#600000 milliseconds = 10 minutes
|
||||||
REACT_APP_MACHINE_PING_INTERVAL=600000
|
REACT_APP_MACHINE_PING_INTERVAL=600000
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PUBLIC_URL=/network-resurrector/
|
PUBLIC_URL=
|
||||||
REACT_APP_TUITIO_URL=https://lab.code-rove.com/tuitio
|
REACT_APP_TUITIO_URL=https://#######
|
||||||
REACT_APP_NETWORK_RESURRECTOR_API_URL=https://lab.code-rove.com/network-resurrector-api
|
REACT_APP_NETWORK_RESURRECTOR_API_URL=https://#######
|
||||||
|
|
||||||
#900000 milliseconds = 15 minutes
|
#900000 milliseconds = 15 minutes
|
||||||
REACT_APP_MACHINE_PING_INTERVAL=900000
|
REACT_APP_MACHINE_PING_INTERVAL=900000
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
# misc
|
# misc
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.env.local
|
.env.local
|
||||||
|
.env.development
|
||||||
.env.development.local
|
.env.development.local
|
||||||
.env.test.local
|
.env.test.local
|
||||||
.env.production.local
|
.env.production.local
|
||||||
|
|
17
dockerfile
17
dockerfile
|
@ -2,22 +2,31 @@
|
||||||
FROM node:14-slim as builder
|
FROM node:14-slim as builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
# global args
|
||||||
|
ARG APP_SUBFOLDER=
|
||||||
|
|
||||||
COPY .npmrc .npmrc
|
COPY .npmrc .npmrc
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
RUN npm install
|
RUN npm install
|
||||||
RUN rm -f .npmrc
|
RUN rm -f .npmrc
|
||||||
|
|
||||||
COPY . ./
|
COPY . ./
|
||||||
RUN npm run build
|
|
||||||
|
# set the PUBLIC_URL environment variable
|
||||||
|
ENV PUBLIC_URL /${APP_SUBFOLDER}/
|
||||||
|
|
||||||
|
# build the react app
|
||||||
|
# RUN npm run build
|
||||||
|
RUN if [ -z "$APP_SUBFOLDER" ]; then npm run build; else PUBLIC_URL=$PUBLIC_URL npm run build; fi
|
||||||
|
|
||||||
|
|
||||||
# production environment
|
# production environment
|
||||||
FROM node:14-slim
|
FROM node:14-slim
|
||||||
RUN printf '\n\n- Copy application files\n'
|
RUN printf '\n\n- Copy application files\n'
|
||||||
|
|
||||||
ARG APP_SUBFOLDER=network-resurrector
|
|
||||||
|
|
||||||
COPY --from=builder /app/build ./application/${APP_SUBFOLDER}
|
COPY --from=builder /app/build ./application/${APP_SUBFOLDER}
|
||||||
COPY --from=builder /app/build/index.html ./application/
|
COPY --from=builder /app/build/index.html ./application/
|
||||||
|
COPY --from=builder /app/setenv.js ./application/setenv.js
|
||||||
|
|
||||||
#install static server
|
#install static server
|
||||||
RUN npm install -g serve
|
RUN npm install -g serve
|
||||||
|
@ -35,4 +44,4 @@ WORKDIR /
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|
||||||
CMD ["sh", "-c", "serve -s application -p 80"]
|
CMD ["sh", "-c", "node setenv.js && serve -s application -p 80"]
|
|
@ -0,0 +1,2 @@
|
||||||
|
// In this file will be injected the environment variables that will overwrite the application configurations.
|
||||||
|
window.env = {};
|
|
@ -32,6 +32,7 @@
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
||||||
/>
|
/>
|
||||||
|
<script src="%PUBLIC_URL%/env.js"></script>
|
||||||
<title>Network resurrector</title>
|
<title>Network resurrector</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
"use strict";
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const prefix = "REACT_APP_";
|
||||||
|
const scriptPath = path.join("./application", process.env.PUBLIC_URL, "env.js");
|
||||||
|
|
||||||
|
function generateScriptContent() {
|
||||||
|
const prefixRegex = new RegExp(`^${prefix}`);
|
||||||
|
const env = process.env;
|
||||||
|
const config = Object.keys(env)
|
||||||
|
.filter(key => prefixRegex.test(key))
|
||||||
|
.reduce((c, key) => Object.assign({}, c, { [key]: env[key] }), {});
|
||||||
|
return `window.env=${JSON.stringify(config)};`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveScriptContent(scriptContents) {
|
||||||
|
fs.writeFile(scriptPath, scriptContents, "utf8", function (err) {
|
||||||
|
if (err) throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Setting environment variables...");
|
||||||
|
const scriptContent = generateScriptContent();
|
||||||
|
saveScriptContent(scriptContent);
|
||||||
|
console.log(
|
||||||
|
`Updated ${scriptPath} with ${prefix}* environment variables: ${scriptContent}.`
|
||||||
|
);
|
|
@ -5,10 +5,11 @@ import CssBaseline from "@material-ui/core/CssBaseline";
|
||||||
import AppRouter from "./components/AppRouter";
|
import AppRouter from "./components/AppRouter";
|
||||||
import { TuitioProvider } from "@flare/tuitio-client-react";
|
import { TuitioProvider } from "@flare/tuitio-client-react";
|
||||||
import { ToastProvider } from "./providers";
|
import { ToastProvider } from "./providers";
|
||||||
|
import env from "./utils/env";
|
||||||
import "./utils/i18n";
|
import "./utils/i18n";
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<TuitioProvider tuitioUrl={process.env.REACT_APP_TUITIO_URL}>
|
<TuitioProvider tuitioUrl={env.REACT_APP_TUITIO_URL}>
|
||||||
<ThemeProvider>
|
<ThemeProvider>
|
||||||
<CssBaseline />
|
<CssBaseline />
|
||||||
<Suspense fallback={<div>Loading...</div>}>
|
<Suspense fallback={<div>Loading...</div>}>
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import * as axios from "../utils/axios";
|
import * as axios from "../utils/axios";
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
|
import env from "../utils/env";
|
||||||
|
|
||||||
const networkRoute = `${process.env.REACT_APP_NETWORK_RESURRECTOR_API_URL}/network`;
|
const networkRoute = `${env.REACT_APP_NETWORK_RESURRECTOR_API_URL}/network`;
|
||||||
const systemRoute = `${process.env.REACT_APP_NETWORK_RESURRECTOR_API_URL}/system`;
|
const systemRoute = `${env.REACT_APP_NETWORK_RESURRECTOR_API_URL}/system`;
|
||||||
const powerActionsRoute = `${process.env.REACT_APP_NETWORK_RESURRECTOR_API_URL}/resurrector`;
|
const powerActionsRoute = `${env.REACT_APP_NETWORK_RESURRECTOR_API_URL}/resurrector`;
|
||||||
const securityRoute = `${process.env.REACT_APP_NETWORK_RESURRECTOR_API_URL}/security`;
|
const securityRoute = `${env.REACT_APP_NETWORK_RESURRECTOR_API_URL}/security`;
|
||||||
|
|
||||||
const routes = {
|
const routes = {
|
||||||
permissions: `${securityRoute}/permissions`,
|
permissions: `${securityRoute}/permissions`,
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
const runtimeEnv = window.env;
|
||||||
|
const compileEnv = process.env;
|
||||||
|
const env = { ...compileEnv, ...runtimeEnv };
|
||||||
|
export default env;
|
Loading…
Reference in New Issue