Setup deployment for Khufu
This commit is contained in:
parent
5d35d66713
commit
9bed3908d3
10 changed files with 101 additions and 39 deletions
10
Dockerfile
10
Dockerfile
|
@ -1,10 +1,10 @@
|
|||
FROM node:latest
|
||||
RUN apt-get update && apt-get upgrade -y
|
||||
RUN apt-get install libsass-dev build-essential -y
|
||||
WORKDIR /dunestorm/khufu
|
||||
COPY build /dunestorm/khufu/build/
|
||||
RUN npm i -g serve
|
||||
COPY package.json .
|
||||
RUN npm i --only=prod
|
||||
COPY server server
|
||||
COPY build build
|
||||
ENV KHUFU_DEV_TOKEN $KHUFU_DEV_TOKEN
|
||||
CMD ["serve", "-s", "build", "-l", "52026"]
|
||||
# EXPOSE PORTS
|
||||
CMD ["npm", "start"]
|
||||
EXPOSE 52026
|
||||
|
|
33
docker-compose.yml
Normal file
33
docker-compose.yml
Normal file
|
@ -0,0 +1,33 @@
|
|||
version: "3"
|
||||
services:
|
||||
cairo.dunestorm.net:
|
||||
image: cairo.dunestorm.net
|
||||
ports:
|
||||
- "52000:52000"
|
||||
environment:
|
||||
- ALEXANDRIA_DATABASE_PASSWORD=${ALEXANDRIA_DATABASE_PASSWORD}
|
||||
|
||||
nubian.dunestorm.net:
|
||||
image: nubian.dunestorm.net
|
||||
ports:
|
||||
- "52001:52001"
|
||||
environment:
|
||||
- ALEXANDRIA_DATABASE_PASSWORD=${ALEXANDRIA_DATABASE_PASSWORD}
|
||||
|
||||
khufu.dunestorm.net:
|
||||
image: khufu.dunestorm.net
|
||||
build: .
|
||||
ports:
|
||||
- "80:52026"
|
||||
|
||||
alexandria.dunestorm.net:
|
||||
image: mongo
|
||||
environment:
|
||||
- MONGO_INITDB_ROOT_USERNAME=admin
|
||||
- MONGO_INITDB_ROOT_PASSWORD=${ALEXANDRIA_DATABASE_PASSWORD}
|
||||
volumes:
|
||||
- /home/dunemask/Documents/dev/Dunestorm/mongodb/database:/data/db
|
||||
ports:
|
||||
- "27017:27017"
|
||||
restart: unless-stopped
|
||||
command: --quiet
|
32
package.json
32
package.json
|
@ -1,13 +1,17 @@
|
|||
{
|
||||
"name": "dunestash-frontend",
|
||||
"version": "0.1.0",
|
||||
"name": "khufu",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.35",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.15.3",
|
||||
"@fortawesome/free-regular-svg-icons": "^5.15.3",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.15.3",
|
||||
"@fortawesome/react-fontawesome": "^0.1.14",
|
||||
"http-proxy-middleware": "^2.0.1",
|
||||
"express": "^4.17.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.36",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.15.4",
|
||||
"@fortawesome/free-regular-svg-icons": "^5.15.4",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.15.4",
|
||||
"@fortawesome/react-fontawesome": "^0.1.15",
|
||||
"js-file-download": "^0.4.12",
|
||||
"react": "^17.0.2",
|
||||
"react-axios": "^2.0.5",
|
||||
|
@ -17,15 +21,12 @@
|
|||
"react-router-dom": "^5.2.0",
|
||||
"react-scripts": "^4.0.3",
|
||||
"react-toastify": "^7.0.4",
|
||||
"remove": "^0.1.5",
|
||||
"sass": "^1.36.0",
|
||||
"web-vitals": "^2.1.0"
|
||||
"sass": "^1.37.5"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "PORT=52026 react-scripts start",
|
||||
"build": "react-scripts build",
|
||||
"test": "react-scripts test",
|
||||
"eject": "react-scripts eject"
|
||||
"start": "node server/main.js",
|
||||
"start:dev": "PORT=52026 react-scripts start",
|
||||
"build": "react-scripts build"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": [
|
||||
|
@ -44,8 +45,5 @@
|
|||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"serve": "^12.0.0"
|
||||
}
|
||||
}
|
||||
|
|
10
server/main.js
Normal file
10
server/main.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
const express = require("express");
|
||||
const { createProxyMiddleware } = require("http-proxy-middleware");
|
||||
const port = process.env.PORT || 52026;
|
||||
const cairoUrl = process.env.CAIRO_URL || "http://cairo.dunestorm.net:52000";
|
||||
const nubianUrl = process.env.NUBIAN_URL || "http://nubian.dunestorm.net:52001";
|
||||
const app = express();
|
||||
app.use("/", express.static("build"));
|
||||
app.use("/api/cairo", createProxyMiddleware({ target: cairoUrl }));
|
||||
app.use("/api/nubian", createProxyMiddleware({ target: nubianUrl }));
|
||||
app.listen(port, () => console.log(`🌴 Nile server started on ${port}! 🌴`));
|
|
@ -6,7 +6,7 @@ import "react-toastify/dist/ReactToastify.css";
|
|||
import Stash from "./Stash";
|
||||
//Constants
|
||||
const token =
|
||||
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1dWlkIjoiYmVjYWNjNjdhNmRjLTBlN2QtMDBlNi1jYmVhLWVhZGNlYmUxIiwiaWF0IjoxNjI3MTcxMDU1LCJleHAiOjE2Mjk3NjMwNTV9.zqiHrYnJlB7ozwjMnpgVUsBAt9vfLHLICFgWB0MguLA";
|
||||
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYxMDhiMjI1ODBmYWEwMDAxMzQwZDdjMiIsImVtYWlsIjoiZHVuZXFhK3VzZXJAZ21haWwuY29tIiwiaXAiOiI6OmZmZmY6MTkyLjE2OC4yMjQuMSIsImlhdCI6MTYyNzk1OTg0NSwiZXhwIjoxNjMwNTUxODQ1fQ.mGybyFVxGzQ0cSIU4oE-RQpkQM45kIGHVFNAQmwsvvk";
|
||||
localStorage.setItem("authToken", token);
|
||||
class App extends React.Component {
|
||||
render() {
|
||||
|
|
|
@ -6,10 +6,10 @@ import { toast } from "react-toastify";
|
|||
import Stashbar from "./stash/Stashbar";
|
||||
import StashUpload from "./stash/StashUpload";
|
||||
import StashContextMenu from "./stash/StashContextMenu";
|
||||
import { serverUrls, serverAddress } from "./stash/api.json";
|
||||
import { serverUrls} from "./stash/api.json";
|
||||
import "./stash/scss/Stash.scss";
|
||||
//Constants
|
||||
const filesUrl = `${serverAddress}/${serverUrls.GET.filesUrl}`;
|
||||
const filesUrl = `${serverUrls.GET.filesUrl}`;
|
||||
//Class
|
||||
const getConfig = () => ({
|
||||
headers: {
|
||||
|
|
23
src/setupProxy.js
Normal file
23
src/setupProxy.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
const { createProxyMiddleware } = require("http-proxy-middleware");
|
||||
const cairoUrl =
|
||||
process.env.CAIRO_URL || "http://cairo.dunestorm.net:52000";
|
||||
const nubianUrl =
|
||||
process.env.NUBIAN_URL || "http://nubian.dunestorm.net:52001";
|
||||
module.exports = (app) => {
|
||||
// Cairo Proxy
|
||||
app.use(
|
||||
"/api/cairo",
|
||||
createProxyMiddleware({
|
||||
target: cairoUrl,
|
||||
// logLevel: "silent",
|
||||
})
|
||||
);
|
||||
// Nubian Proxy
|
||||
app.use(
|
||||
"/api/nubian",
|
||||
createProxyMiddleware({
|
||||
target: nubianUrl,
|
||||
// logLevel: "silent",
|
||||
})
|
||||
);
|
||||
};
|
|
@ -12,11 +12,11 @@ import {
|
|||
} from "@fortawesome/free-solid-svg-icons";
|
||||
//Local Imports
|
||||
import "./scss/stash/StashContextMenu.scss";
|
||||
import { serverUrls, serverAddress } from "./api.json";
|
||||
import { serverUrls } from "./api.json";
|
||||
//Constants
|
||||
const downloadUrl = `${serverAddress}/${serverUrls.POST.downloadUrl}`;
|
||||
const deleteUrl = `${serverAddress}/${serverUrls.POST.deleteUrl}`;
|
||||
const publicUrl = `${serverAddress}/${serverUrls.POST.publicUrl}`;
|
||||
const downloadUrl = `${serverUrls.POST.downloadUrl}`;
|
||||
const deleteUrl = `${serverUrls.POST.deleteUrl}`;
|
||||
const publicUrl = `${serverUrls.POST.publicUrl}`;
|
||||
|
||||
function getConfig() {
|
||||
var authToken = localStorage.getItem("authToken");
|
||||
|
|
|
@ -6,8 +6,8 @@ import { toast } from "react-toastify";
|
|||
import StashDropzone from "./StashDropzone";
|
||||
import StashUploadDialog from "./uploader/StashUploadDialog";
|
||||
//Constants
|
||||
import { serverUrls, serverFields, serverAddress } from "./api.json";
|
||||
const uploadUrl = `${serverAddress}/${serverUrls.POST.uploadUrl}`;
|
||||
import { serverUrls, serverFields } from "./api.json";
|
||||
const uploadUrl = `${serverUrls.POST.uploadUrl}`;
|
||||
const uploadField = serverFields.uploadField;
|
||||
const cancelMessage = "User Canceled";
|
||||
const successClearTime = 200;
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
{
|
||||
"serverAddress": "http://nubian.dunestorm.net:52001",
|
||||
"serverUrls": {
|
||||
"POST": {
|
||||
"uploadUrl": "api/stash/upload",
|
||||
"downloadUrl": "api/stash/download",
|
||||
"deleteUrl": "api/stash/delete",
|
||||
"publicUrl": "api/stash/public"
|
||||
"uploadUrl": "/api/nubian/stash/upload",
|
||||
"downloadUrl": "/api/nubian/stash/download",
|
||||
"deleteUrl": "/api/nubian/stash/delete",
|
||||
"publicUrl": "/api/nubian/stash/public"
|
||||
},
|
||||
"GET": {
|
||||
"filesUrl": "api/stash/files",
|
||||
"rawUrl": "api/stash/raw",
|
||||
"avatar": "api/user/avatar"
|
||||
"filesUrl": "/api/nubian/stash/files",
|
||||
"rawUrl": "/api/nubian/stash/raw"
|
||||
}
|
||||
},
|
||||
"serverFields": {
|
||||
|
|
Reference in a new issue