From 406ec7f428651399f253a76dfa6b7b598f3e8fb2 Mon Sep 17 00:00:00 2001
From: Karol Wypchlo
Date: Mon, 1 Feb 2021 21:05:22 +0100
Subject: [PATCH] separate accounts from default docker-compose
---
docker-compose.accounts.yml | 163 ++++++++++++++++++
docker-compose.yml | 146 ----------------
.../nginx.secure.conf} | 0
docker/nginx/nginx.conf | 1 +
packages/webapp/Dockerfile | 6 +-
packages/webapp/package.json | 1 +
.../webapp/src/components/HomeTop/HomeTop.js | 21 ++-
7 files changed, 182 insertions(+), 156 deletions(-)
create mode 100644 docker-compose.accounts.yml
rename docker/{nginx/conf.d/secure.conf => accounts/nginx.secure.conf} (100%)
diff --git a/docker-compose.accounts.yml b/docker-compose.accounts.yml
new file mode 100644
index 00000000..d0c06888
--- /dev/null
+++ b/docker-compose.accounts.yml
@@ -0,0 +1,163 @@
+version: "3.7"
+
+x-logging: &default-logging
+ driver: json-file
+ options:
+ max-size: "10m"
+ max-file: "3"
+
+services:
+ webapp:
+ build:
+ args:
+ WITH_ACCOUNTS: 1
+
+ nginx:
+ volumes:
+ - ./docker/accounts/nginx.secure.conf:/etc/nginx/conf.extra.d/nginx.secure.conf:ro
+
+ accounts:
+ build:
+ context: ./docker/accounts
+ dockerfile: Dockerfile
+ container_name: accounts
+ restart: unless-stopped
+ logging: *default-logging
+ env_file:
+ - .env
+ environment:
+ - SKYNET_DB_HOST=mongo
+ - SKYNET_DB_PORT=27017
+ - SKYNET_DB_USER=${SKYNET_DB_USER}
+ - SKYNET_DB_PASS=${SKYNET_DB_PASS}
+ - COOKIE_DOMAIN=${COOKIE_DOMAIN}
+ - COOKIE_HASH_KEY=${COOKIE_HASH_KEY}
+ - COOKIE_ENC_KEY=${COOKIE_ENC_KEY}
+ expose:
+ - 3000
+ networks:
+ shared:
+ ipv4_address: 10.10.10.70
+ depends_on:
+ - mongo
+ - oathkeeper
+
+ mongo:
+ image: mongo:4.4.1
+ command: --keyFile=/data/mgkey --replSet=skynet
+ container_name: mongo
+ restart: unless-stopped
+ logging: *default-logging
+ volumes:
+ - ./docker/data/mongo/db:/data/db
+ - ./docker/data/mongo/mgkey:/data/mgkey:rw
+ networks:
+ shared:
+ ipv4_address: 10.10.10.71
+ ports:
+ - "27017:27017"
+
+ kratos-migrate:
+ image: oryd/kratos:v0.5.4-alpha.1
+ container_name: kratos-migrate
+ restart: on-failure
+ logging: *default-logging
+ environment:
+ - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt
+ - SQA_OPT_OUT=true
+ volumes:
+ - ./docker/kratos/config:/etc/config/kratos
+ - ./docker/data/cockroach/sqlite:/var/lib/sqlite
+ - ./docker/kratos/cr_certs:/certs
+ command: -c /etc/config/kratos/kratos.yml migrate sql -e --yes
+ networks:
+ shared:
+ ipv4_address: 10.10.10.80
+
+ kratos:
+ image: oryd/kratos:v0.5.4-alpha.1
+ container_name: kratos
+ restart: unless-stopped
+ logging: *default-logging
+ ports:
+ - "4433:4433" # public
+ - "4434:4434" # admin
+ expose:
+ - 4433 # public
+ - 4434 # admin
+ environment:
+ - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt
+ - LOG_LEVEL=trace
+ - SERVE_PUBLIC_BASE_URL=/.ory/kratos/public/
+ - SQA_OPT_OUT=true
+ command: serve -c /etc/config/kratos/kratos.yml
+ volumes:
+ - ./docker/kratos/config:/etc/config/kratos
+ - ./docker/data/cockroach/sqlite:/var/lib/sqlite
+ - ./docker/kratos/cr_certs:/certs
+ networks:
+ shared:
+ ipv4_address: 10.10.10.81
+ depends_on:
+ - kratos-migrate
+
+ kratos-selfservice-ui-node:
+ image: oryd/kratos-selfservice-ui-node:v0.5.0-alpha.1
+ container_name: kratos-selfservice-ui-node
+ restart: on-failure
+ logging: *default-logging
+ volumes:
+ - ./docker/kratos-selfservice-ui-node/main.hbs:/usr/src/app/views/layouts/main.hbs:ro
+ - ./docker/kratos-selfservice-ui-node/login.hbs:/usr/src/app/views/login.hbs:ro
+ - ./docker/kratos-selfservice-ui-node/dashboard.hbs:/usr/src/app/views/dashboard.hbs:ro
+ - ./docker/kratos-selfservice-ui-node/registration.hbs:/usr/src/app/views/registration.hbs:ro
+ - ./docker/kratos-selfservice-ui-node/icon_logo.hbs:/usr/src/app/views/partials/icon_logo.hbs:ro
+ - ./docker/kratos-selfservice-ui-node/branding.css:/usr/src/app/public/branding.css:ro
+ - ./docker/kratos-selfservice-ui-node/favico.png:/usr/src/app/public/favico.png:ro
+ environment:
+ - PORT=4435
+ - SECURITY_MODE=jwks
+ - PROJECT_NAME=Skynet
+ - BASE_URL=/
+ - KRATOS_BROWSER_URL=/.ory/kratos/public
+ - JWKS_URL=http://oathkeeper:4456/.well-known/jwks.json
+ - KRATOS_PUBLIC_URL=http://kratos:4433/
+ - KRATOS_ADMIN_URL=http://kratos:4434/
+ - SQA_OPT_OUT=true
+ networks:
+ shared:
+ ipv4_address: 10.10.10.82
+
+ oathkeeper:
+ image: oryd/oathkeeper:v0.38
+ container_name: oathkeeper
+ depends_on:
+ - kratos
+ expose:
+ - 4455
+ - 4456
+ command: serve proxy -c "/etc/config/oathkeeper/oathkeeper.yml"
+ environment:
+ - LOG_LEVEL=debug
+ volumes:
+ - ./docker/kratos/oathkeeper:/etc/config/oathkeeper
+ restart: on-failure
+ networks:
+ shared:
+ ipv4_address: 10.10.10.83
+
+ cockroach:
+ image: cockroachdb/cockroach:v20.2.3
+ container_name: cockroach
+ env_file:
+ - .env
+ command: start --advertise-addr=${CR_IP} --join=${CR_CLUSTER_NODES} --certs-dir=/certs --listen-addr=0.0.0.0:26257 --http-addr=0.0.0.0:8080
+ volumes:
+ - ./docker/data/cockroach/sqlite:/cockroach/cockroach-data
+ - ./docker/cockroach/certs:/certs
+ ports:
+ - "4080:8080"
+ - "26257:26257"
+ networks:
+ shared:
+ ipv4_address: 10.10.10.84
diff --git a/docker-compose.yml b/docker-compose.yml
index c5173ab6..c5500452 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -163,149 +163,3 @@ services:
depends_on:
- handshake
- handshake-api
-
- accounts:
- build:
- context: ./docker/accounts
- dockerfile: Dockerfile
- container_name: accounts
- restart: unless-stopped
- logging: *default-logging
- env_file:
- - .env
- environment:
- - SKYNET_DB_HOST=mongo
- - SKYNET_DB_PORT=27017
- - SKYNET_DB_USER=${SKYNET_DB_USER}
- - SKYNET_DB_PASS=${SKYNET_DB_PASS}
- - COOKIE_DOMAIN=${COOKIE_DOMAIN}
- - COOKIE_HASH_KEY=${COOKIE_HASH_KEY}
- - COOKIE_ENC_KEY=${COOKIE_ENC_KEY}
- expose:
- - 3000
- networks:
- shared:
- ipv4_address: 10.10.10.70
- depends_on:
- - mongo
- - oathkeeper
-
- mongo:
- image: mongo:4.4.1
- command: --keyFile=/data/mgkey --replSet=skynet
- container_name: mongo
- restart: unless-stopped
- logging: *default-logging
- volumes:
- - ./docker/data/mongo/db:/data/db
- - ./docker/data/mongo/mgkey:/data/mgkey:rw
- networks:
- shared:
- ipv4_address: 10.10.10.71
- ports:
- - "27017:27017"
-
- kratos-migrate:
- image: oryd/kratos:v0.5.4-alpha.1
- container_name: kratos-migrate
- restart: on-failure
- logging: *default-logging
- environment:
- - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt
- - SQA_OPT_OUT=true
- volumes:
- - ./docker/kratos/config:/etc/config/kratos
- - ./docker/data/cockroach/sqlite:/var/lib/sqlite
- - ./docker/kratos/cr_certs:/certs
- command: -c /etc/config/kratos/kratos.yml migrate sql -e --yes
- networks:
- shared:
- ipv4_address: 10.10.10.80
-
- kratos:
- image: oryd/kratos:v0.5.4-alpha.1
- container_name: kratos
- restart: unless-stopped
- logging: *default-logging
- ports:
- - "4433:4433" # public
- - "4434:4434" # admin
- expose:
- - 4433 # public
- - 4434 # admin
- environment:
- - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt
- - LOG_LEVEL=trace
- - SERVE_PUBLIC_BASE_URL=/.ory/kratos/public/
- - SQA_OPT_OUT=true
- command: serve -c /etc/config/kratos/kratos.yml
- volumes:
- - ./docker/kratos/config:/etc/config/kratos
- - ./docker/data/cockroach/sqlite:/var/lib/sqlite
- - ./docker/kratos/cr_certs:/certs
- networks:
- shared:
- ipv4_address: 10.10.10.81
- depends_on:
- - kratos-migrate
-
- kratos-selfservice-ui-node:
- image: oryd/kratos-selfservice-ui-node:v0.5.0-alpha.1
- container_name: kratos-selfservice-ui-node
- restart: on-failure
- logging: *default-logging
- volumes:
- - ./docker/kratos-selfservice-ui-node/main.hbs:/usr/src/app/views/layouts/main.hbs:ro
- - ./docker/kratos-selfservice-ui-node/login.hbs:/usr/src/app/views/login.hbs:ro
- - ./docker/kratos-selfservice-ui-node/dashboard.hbs:/usr/src/app/views/dashboard.hbs:ro
- - ./docker/kratos-selfservice-ui-node/registration.hbs:/usr/src/app/views/registration.hbs:ro
- - ./docker/kratos-selfservice-ui-node/icon_logo.hbs:/usr/src/app/views/partials/icon_logo.hbs:ro
- - ./docker/kratos-selfservice-ui-node/branding.css:/usr/src/app/public/branding.css:ro
- - ./docker/kratos-selfservice-ui-node/favico.png:/usr/src/app/public/favico.png:ro
- environment:
- - PORT=4435
- - SECURITY_MODE=jwks
- - PROJECT_NAME=Skynet
- - BASE_URL=/
- - KRATOS_BROWSER_URL=/.ory/kratos/public
- - JWKS_URL=http://oathkeeper:4456/.well-known/jwks.json
- - KRATOS_PUBLIC_URL=http://kratos:4433/
- - KRATOS_ADMIN_URL=http://kratos:4434/
- - SQA_OPT_OUT=true
- networks:
- shared:
- ipv4_address: 10.10.10.82
-
- oathkeeper:
- image: oryd/oathkeeper:v0.38
- container_name: oathkeeper
- depends_on:
- - kratos
- expose:
- - 4455
- - 4456
- command: serve proxy -c "/etc/config/oathkeeper/oathkeeper.yml"
- environment:
- - LOG_LEVEL=debug
- volumes:
- - ./docker/kratos/oathkeeper:/etc/config/oathkeeper
- restart: on-failure
- networks:
- shared:
- ipv4_address: 10.10.10.83
-
- cockroach:
- image: cockroachdb/cockroach:v20.2.3
- container_name: cockroach
- env_file:
- - .env
- command: start --advertise-addr=${CR_IP} --join=${CR_CLUSTER_NODES} --certs-dir=/certs --listen-addr=0.0.0.0:26257 --http-addr=0.0.0.0:8080
- volumes:
- - ./docker/data/cockroach/sqlite:/cockroach/cockroach-data
- - ./docker/cockroach/certs:/certs
- ports:
- - "4080:8080"
- - "26257:26257"
- networks:
- shared:
- ipv4_address: 10.10.10.84
diff --git a/docker/nginx/conf.d/secure.conf b/docker/accounts/nginx.secure.conf
similarity index 100%
rename from docker/nginx/conf.d/secure.conf
rename to docker/accounts/nginx.secure.conf
diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf
index 4cff1f70..1bceb5f9 100644
--- a/docker/nginx/nginx.conf
+++ b/docker/nginx/nginx.conf
@@ -63,4 +63,5 @@ http {
#gzip on;
include /etc/nginx/conf.d/*.conf;
+ include /etc/nginx/conf.extra.d/*.conf;
}
diff --git a/packages/webapp/Dockerfile b/packages/webapp/Dockerfile
index db99e207..8a4398da 100644
--- a/packages/webapp/Dockerfile
+++ b/packages/webapp/Dockerfile
@@ -4,12 +4,16 @@ RUN apk add --no-cache autoconf automake libtool gcc make g++ zlib-dev file nasm
WORKDIR /usr/app
+ARG WITH_ACCOUNTS=0
+
COPY src ./src
COPY static ./static
COPY gatsby-config.js .
COPY package.json .
ENV CYPRESS_INSTALL_BINARY 0
-ENV GATSBY_TELEMETRY_DISABLED 1
RUN yarn --no-lockfile
+
+ENV GATSBY_TELEMETRY_DISABLED 1
+ENV GATSBY_WITH_ACCOUNTS $WITH_ACCOUNTS
RUN yarn build
diff --git a/packages/webapp/package.json b/packages/webapp/package.json
index f2f85400..5a70ab21 100644
--- a/packages/webapp/package.json
+++ b/packages/webapp/package.json
@@ -5,6 +5,7 @@
"author": "Nebulous",
"dependencies": {
"axios": "0.21.1",
+ "boolean": "^3.0.2",
"bytes": "3.1.0",
"classnames": "2.2.6",
"fontsource-metropolis": "4.0.0",
diff --git a/packages/webapp/src/components/HomeTop/HomeTop.js b/packages/webapp/src/components/HomeTop/HomeTop.js
index ba62c1eb..ada73032 100644
--- a/packages/webapp/src/components/HomeTop/HomeTop.js
+++ b/packages/webapp/src/components/HomeTop/HomeTop.js
@@ -1,4 +1,5 @@
import React from "react";
+import { boolean } from "boolean";
import logo from "../../images/logo.svg";
import "./HomeTop.scss";
import { Skynet, Deco1, Deco2 } from "../../svg";
@@ -15,15 +16,17 @@ export default function HomeTop() {
The decentralized CDN and file sharing platform for devs. Skynet is the storage foundation for a Free Internet!
-
-
- Sign up now!
- {" "}
- Already have an account? Go to your{" "}
-
- dashboard
-
-
+ {boolean(process.env.GATSBY_WITH_ACCOUNTS) && (
+
+
+ Sign up now!
+ {" "}
+ Already have an account? Go to your{" "}
+
+ dashboard
+
+
+ )}