separate accounts from default docker-compose

This commit is contained in:
Karol Wypchlo 2021-02-01 21:05:22 +01:00
parent 38ac0c7c8f
commit 406ec7f428
7 changed files with 182 additions and 156 deletions

163
docker-compose.accounts.yml Normal file
View File

@ -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

View File

@ -163,149 +163,3 @@ services:
depends_on: depends_on:
- handshake - handshake
- handshake-api - 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

View File

@ -63,4 +63,5 @@ http {
#gzip on; #gzip on;
include /etc/nginx/conf.d/*.conf; include /etc/nginx/conf.d/*.conf;
include /etc/nginx/conf.extra.d/*.conf;
} }

View File

@ -4,12 +4,16 @@ RUN apk add --no-cache autoconf automake libtool gcc make g++ zlib-dev file nasm
WORKDIR /usr/app WORKDIR /usr/app
ARG WITH_ACCOUNTS=0
COPY src ./src COPY src ./src
COPY static ./static COPY static ./static
COPY gatsby-config.js . COPY gatsby-config.js .
COPY package.json . COPY package.json .
ENV CYPRESS_INSTALL_BINARY 0 ENV CYPRESS_INSTALL_BINARY 0
ENV GATSBY_TELEMETRY_DISABLED 1
RUN yarn --no-lockfile RUN yarn --no-lockfile
ENV GATSBY_TELEMETRY_DISABLED 1
ENV GATSBY_WITH_ACCOUNTS $WITH_ACCOUNTS
RUN yarn build RUN yarn build

View File

@ -5,6 +5,7 @@
"author": "Nebulous", "author": "Nebulous",
"dependencies": { "dependencies": {
"axios": "0.21.1", "axios": "0.21.1",
"boolean": "^3.0.2",
"bytes": "3.1.0", "bytes": "3.1.0",
"classnames": "2.2.6", "classnames": "2.2.6",
"fontsource-metropolis": "4.0.0", "fontsource-metropolis": "4.0.0",

View File

@ -1,4 +1,5 @@
import React from "react"; import React from "react";
import { boolean } from "boolean";
import logo from "../../images/logo.svg"; import logo from "../../images/logo.svg";
import "./HomeTop.scss"; import "./HomeTop.scss";
import { Skynet, Deco1, Deco2 } from "../../svg"; import { Skynet, Deco1, Deco2 } from "../../svg";
@ -15,6 +16,7 @@ export default function HomeTop() {
The decentralized CDN and file sharing platform for devs. Skynet is the storage foundation for a Free Internet! The decentralized CDN and file sharing platform for devs. Skynet is the storage foundation for a Free Internet!
</p> </p>
{boolean(process.env.GATSBY_WITH_ACCOUNTS) && (
<p className="auth-links"> <p className="auth-links">
<a href="/secure/auth/registration" className="link"> <a href="/secure/auth/registration" className="link">
Sign up now! Sign up now!
@ -24,6 +26,7 @@ export default function HomeTop() {
dashboard dashboard
</a> </a>
</p> </p>
)}
<Deco1 className="deco-1" /> <Deco1 className="deco-1" />
<Deco2 className="deco-2" /> <Deco2 className="deco-2" />