From 7fa14a00d6f064378d63b916a5294f1c6cb1b38a Mon Sep 17 00:00:00 2001 From: Sophia Xu Date: Mon, 4 Apr 2022 16:17:01 -0400 Subject: [PATCH 1/2] feat(unigraph): improve user experience with Docker --- .dockerignore | 28 ++++++++++++++++++++++++++++ Dockerfile | 36 ++++++++++++++++++++++++++++++++++++ README.md | 11 +++++++++++ package.json | 2 +- scripts/start_server.sh | 1 + 5 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..97d1c622 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,28 @@ +.git +# System files +.DS_Store + +# Logs +*.log +npm-debug.log* + +# Directories +node_modules +*/node_modules +packages/*/dist +.ignore +coverage/ +.history + +# Secrets +secrets.env.json + +# Etc +packages/unigraph-dev-backend/exports.json + +# Obsidian for docs +docs/.obsidian/workspace +docs/.obsidian/plugins + +# Linting +.eslintcache \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..1bb22bc1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# syntax=docker/dockerfile:1 +FROM amd64/ubuntu:20.04 + +# Set up dependencies +RUN apt update && apt install -y curl wget + +# Set up Node.js 16 +RUN curl -sL https://deb.nodesource.com/setup_16.x -o /tmp/nodesource_setup.sh +RUN bash /tmp/nodesource_setup.sh +RUN apt update && apt install -y nodejs +RUN npm install yarn -g + +# Set up dgraph +ADD https://github.com/unigraph-dev/dgraph/releases/latest/download/dgraph_linux_amd64 dgraph_linux_amd64 +RUN mkdir /opt/unigraph +RUN mv dgraph_linux_amd64 /opt/dgraph +RUN chmod +x /opt/dgraph + +# Set up unigraph, with incremental caches +COPY package.json yarn.lock /app/ +COPY ./packages/unigraph-dev-backend/package.json /app/packages/unigraph-dev-backend/package.json +COPY ./packages/unigraph-dev-common/package.json /app/packages/unigraph-dev-common/package.json +COPY ./packages/unigraph-dev-electron/package.json /app/packages/unigraph-dev-electron/package.json +COPY ./packages/unigraph-dev-explorer/package.json /app/packages/unigraph-dev-explorer/package.json +RUN cd /app && yarn +COPY . /app +RUN cd /app && yarn +RUN cd /app && yarn build-deps + +# Run Unigraph +WORKDIR /app +CMD ["sh", "-c", "./scripts/start_server.sh -b /opt/dgraph -d /opt/unigraph & yarn explorer-start"] + +EXPOSE 3000 +EXPOSE 4001 +EXPOSE 4002 \ No newline at end of file diff --git a/README.md b/README.md index 347ae4da..7695f2bb 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,17 @@ License: ## Getting started +### Running with Docker image + +We provide an experimental Dockerfile for easy setup: + +- Building Unigraph: `docker build -t unigraph-devserver.` (this should take roughly 10 minutes max), +- Running Unigraph: `docker run -d -p 4002:4002 -v :/opt/unigraph -p 4001:4001 -p 3000:3000 -P unigraph-devserver`, + +To update the Docker image, run `docker build` again after `git pull`. + +### Building from source + **1)** Build the [`Dgraph`](https://github.com/unigraph-dev/dgraph) backend binary from source [[reference](https://github.com/unigraph-dev/dgraph#install-from-source)] > requires `gcc`, `make`, `go>=1.13` diff --git a/package.json b/package.json index 318fc974..58acedfd 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ }, "scripts": { "postinstall": "run-script-os", - "postinstall:linux:darwin": "(mkdir packages/unigraph-dev-explorer/public/vendor/ || true) && cp -R ./node_modules/monaco-editor/min/vs packages/unigraph-dev-explorer/public/vendor/monaco-editor_at_0.31.1/", + "postinstall:linux:darwin": "(mkdir packages/unigraph-dev-explorer/public/vendor/ || true) && (cp -R ./node_modules/monaco-editor/min/vs packages/unigraph-dev-explorer/public/vendor/monaco-editor_at_0.31.1/ || true)", "postinstall:windows": "pwsh -Command \"mkdir -Force packages/unigraph-dev-explorer/public/vendor/ && Copy-Item ./node_modules/monaco-editor/min/vs -Destination packages/unigraph-dev-explorer/public/vendor/monaco-editor_at_0.31.1/ -Recurse -Force\"", "backend-build": "yarn workspace unigraph-dev-backend build", "backend-start": "yarn workspace unigraph-dev-backend start", diff --git a/scripts/start_server.sh b/scripts/start_server.sh index 730934ea..f6d4a4ee 100755 --- a/scripts/start_server.sh +++ b/scripts/start_server.sh @@ -28,6 +28,7 @@ fi par=$( cd $(dirname $0) ; pwd -P ) +eval 'mkdir $data || true' eval 'cd $data && $dgraph alpha &' eval 'cd $data && $dgraph zero &' sleep 10 From 794c65c9edd5a7baf11c015470ec1e9b0a1df67b Mon Sep 17 00:00:00 2001 From: Sophia Xu Date: Mon, 4 Apr 2022 16:42:51 -0400 Subject: [PATCH 2/2] fix(dockerfile): dependencies fix for docker --- Dockerfile | 4 ++-- README.md | 2 +- packages/unigraph-dev-explorer/package.json | 9 --------- packages/unigraph-dev-explorer/src/react-app-env.d.ts | 1 - 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1bb22bc1..e88fcefc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,9 +22,9 @@ COPY ./packages/unigraph-dev-backend/package.json /app/packages/unigraph-dev-bac COPY ./packages/unigraph-dev-common/package.json /app/packages/unigraph-dev-common/package.json COPY ./packages/unigraph-dev-electron/package.json /app/packages/unigraph-dev-electron/package.json COPY ./packages/unigraph-dev-explorer/package.json /app/packages/unigraph-dev-explorer/package.json -RUN cd /app && yarn +RUN cd /app && yarn --network-timeout 600000 COPY . /app -RUN cd /app && yarn +RUN cd /app && yarn --network-timeout 600000 RUN cd /app && yarn build-deps # Run Unigraph diff --git a/README.md b/README.md index 7695f2bb..54affca8 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ License: We provide an experimental Dockerfile for easy setup: -- Building Unigraph: `docker build -t unigraph-devserver.` (this should take roughly 10 minutes max), +- Building Unigraph: `docker build -t unigraph-devserver .` (this should take roughly 10 minutes max), - Running Unigraph: `docker run -d -p 4002:4002 -v :/opt/unigraph -p 4001:4001 -p 3000:3000 -P unigraph-devserver`, To update the Docker image, run `docker build` again after `git pull`. diff --git a/packages/unigraph-dev-explorer/package.json b/packages/unigraph-dev-explorer/package.json index c6387c39..92f0e385 100644 --- a/packages/unigraph-dev-explorer/package.json +++ b/packages/unigraph-dev-explorer/package.json @@ -6,11 +6,6 @@ "@date-io/moment": "1.x", "@emotion/react": "^11.7.1", "@emotion/styled": "^11.6.0", - "@material-ui/core": "^4.11.0", - "@material-ui/data-grid": "^4.0.0-alpha.25", - "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "^4.0.0-alpha.57", - "@material-ui/pickers": "^3.3.10", "@mdi/js": "^6.4.95", "@mdi/react": "^1.5.0", "@monaco-editor/react": "^4.1.3", @@ -47,7 +42,6 @@ "jquery": "^3.5.1", "lodash": "^4.17.20", "mdast-util-wiki-link": "^0.0.2", - "micromark-extension-wiki-link": "^0.0.4", "mini-css-extract-plugin": "0.11.3", "mixpanel-browser": "^2.42.0", "moment": "^2.29.1", @@ -73,7 +67,6 @@ "react-markdown": "^6.0.2", "react-refresh": "^0.8.3", "react-resize-detector": "^6.7.6", - "react-router-dom": "^5.2.0", "react-splitter-layout": "^4.0.0", "react-swipeable": "^6.1.2", "react-transition-group": "^4.4.2", @@ -97,7 +90,6 @@ "typescript": "^4.2.2", "unigraph-dev-common": "^0.2.7", "url-loader": "4.1.1", - "uuid": "^8.3.2", "webpack": "4.44.2", "webpack-dev-server": "3.11.1", "webpack-manifest-plugin": "2.2.0", @@ -114,7 +106,6 @@ "@types/react": "^17.0.1", "@types/react-big-calendar": "^0.36.2", "@types/react-dom": "^17.0.1", - "@types/react-router-dom": "^5.1.6", "@types/turndown": "^5.0.1", "@types/uuid": "^8.3.0", "@welldone-software/why-did-you-render": "^6.2.3", diff --git a/packages/unigraph-dev-explorer/src/react-app-env.d.ts b/packages/unigraph-dev-explorer/src/react-app-env.d.ts index b9a62107..592c9800 100644 --- a/packages/unigraph-dev-explorer/src/react-app-env.d.ts +++ b/packages/unigraph-dev-explorer/src/react-app-env.d.ts @@ -80,4 +80,3 @@ declare module '*.pkg' { } declare module 'remark-wiki-link'; -declare module 'micromark-extension-wiki-link';