Docker Compose refactoring

This commit is contained in:
Darren Clarke 2023-06-21 12:48:07 +00:00 committed by GitHub
parent 7a2a667aaf
commit a53a26f4c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 411 additions and 524 deletions

1
.gitignore vendored
View file

@ -15,7 +15,6 @@ npm-debug.log*
.idea/
*.szpm
.env*
yarn-error.log
docker-compose.yml
coverage
.pgpass

View file

@ -63,19 +63,19 @@ create-admin-user:
@test -f .env || echo "You must create .env please refer to the README" && exit 1
start: .env
CURRENT_UID=$(CURRENT_UID) docker-compose up -d
CURRENT_UID=$(CURRENT_UID) docker compose -f docker-compose.link.yml up -d
start-dev: .env
CURRENT_UID=$(CURRENT_UID) docker-compose up --build -d
CURRENT_UID=$(CURRENT_UID) docker compose up --build -d
restart: .env
CURRENT_UID=$(CURRENT_UID) docker restart $(shell docker ps -a -q)
stop:
CURRENT_UID=$(CURRENT_UID) docker-compose down
CURRENT_UID=$(CURRENT_UID) docker compose down
destroy:
docker-compose down
docker compose down
docker volume prune

View file

@ -9,6 +9,5 @@
**/coverage
**/.next
**/amigo.*.json
**/.yalc
**/cypress/videos
**/cypress/screenshots

View file

@ -21,8 +21,6 @@
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env.local

View file

@ -6,8 +6,6 @@ First, run the development server:
```bash
npm run dev
# or
yarn dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

View file

@ -6,8 +6,6 @@ First, run the development server:
```bash
npm run dev
# or
yarn dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

View file

@ -35,7 +35,8 @@ const checkRewrites = async (request: NextRequestWithAuth) => {
const metamigoURL = process.env.METAMIGO_URL ?? "http://metamigo:3000";
if (request.nextUrl.pathname.startsWith('/proxy/leafcutter')) {
return rewriteURL(request, linkBaseURL, leafcutterURL);
const headers = { 'X-Leafcutter-Embedded': "true" };
return rewriteURL(request, linkBaseURL, leafcutterURL, headers);
} else if (request.nextUrl.pathname.startsWith('/proxy/metamigo')) {
return rewriteURL(request, linkBaseURL, metamigoURL);
} else if (request.nextUrl.pathname.startsWith('/proxy/zammad')) {

View file

@ -9,6 +9,5 @@
**/coverage
**/.next
**/amigo.*.json
**/.yalc
**/cypress/videos
**/cypress/screenshots

View file

@ -9,6 +9,5 @@
**/coverage
**/.next
**/amigo.*.json
**/.yalc
**/cypress/videos
**/cypress/screenshots

View file

@ -5,7 +5,7 @@ module.exports = {
"eslint-config-link/profile/node",
"eslint-config-link/profile/typescript",
"eslint-config-link/profile/jest",
"eslint-config-next",
"next",
],
parserOptions: { tsconfigRootDir: __dirname },
};

View file

@ -9,6 +9,5 @@
**/coverage
**/.next
**/amigo.*.json
**/.yalc
**/cypress/videos
**/cypress/screenshots

View file

@ -0,0 +1,20 @@
version: "3.4"
services:
leafcutter:
container_name: leafcutter
restart: ${RESTART}
build:
context: .
dockerfile: ./apps/leafcutter/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/leafcutter:${LINK_STACK_VERSION}
expose:
- "3000"
ports:
- "8005:3000"
environment:
NEXTAUTH_URL: ${LINK_URL}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE}
NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64}
NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64}

29
docker-compose.link.yml Normal file
View file

@ -0,0 +1,29 @@
version: "3.4"
services:
link:
container_name: link
restart: ${RESTART}
build:
context: .
dockerfile: ./apps/link/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/link:${LINK_STACK_VERSION}
expose:
- "3000"
ports:
- "8004:3000"
environment:
ZAMMAD_PROXY_URL: ${ZAMMAD_PROXY_URL}
ZAMMAD_API_TOKEN: ${ZAMMAD_API_TOKEN}
ZAMMAD_VIRUAL_HOST: ${ZAMMAD_VIRTUAL_HOST}
LINK_URL: ${LINK_URL}
LEAFCUTTER_URL: http://leafcutter:3000
METAMIGO_URL: http://metamigo-frontend:3000
ZAMMAD_URL: http://localhost:8001
NEXTAUTH_URL: ${LINK_URL}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE}
NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64}
NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64}
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}

View file

@ -0,0 +1,53 @@
version: "3.4"
x-metamigo-vars:
&common-metamigo-variables
DATABASE_HOST: "metamigo-postgresql"
DATABASE_NAME: "metamigo"
DATABASE_ROOT_OWNER: "root"
DATABASE_ROOT_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD}
DATABASE_OWNER: "metamigo"
DATABASE_PASSWORD: ${METAMIGO_DATABASE_PASSWORD}
DATABASE_VISITOR: "app_visitor"
DATABASE_AUTHENTICATOR: "app_graphile_auth"
DATABASE_AUTHENTICATOR_PASSWORD: ${METAMIGO_DATABASE_AUTHENTICATOR_PASSWORD}
DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo"
WORKER_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo"
SHADOW_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo_shadow"
ROOT_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/template1"
APP_ROOT_DATABASE_URL: "postgresql://root:${METAMIGO_DATABASE_ROOT_PASSWORD}@metamigo-postgresql/metamigo"
DATABASE_AUTH_URL: "postgresql://app_graphile_auth:${METAMIGO_DATABASE_AUTHENTICATOR_PASSWORD}@metamigo-postgresql/metamigo"
CORS_ALLOWED_ORIGINS: "https://metamigo-api,${METAMIGO_DOMAIN},http://localhost:3000,http://127.0.0.1:3000"
FRONTEND_URL: ${METAMIGO_DOMAIN}
API_URL: "http://metamigo-api:3001"
NEXTAUTH_URL: ${METAMIGO_DOMAIN}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE}
NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64}
NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64}
GITLAB_EMAIL_ADDRESS: ${GITLAB_EMAIL_ADDRESS}
GITLAB_ID: ${GITLAB_ID}
GITLAB_SECRET: ${GITLAB_SECRET}
SIGNALD_ENABLED: "true"
SIGNALD_SOCKET: /signald/signald.sock
services:
metamigo-postgresql:
build: ./docker/postgresql
image: registry.gitlab.com/digiresilience/link/link-stack/postgresql:${LINK_STACK_VERSION}
container_name: metamigo-postgresql
restart: ${RESTART}
volumes:
- metamigo-data:/var/lib/postgresql/data
- ./scripts/bootstrap-metamigo.sh:/docker-entrypoint-initdb.d/bootstrap-metamigo.sh
environment:
<<: *common-metamigo-variables
POSTGRES_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD}
POSTGRES_USER: "root"
POSTGRES_DB: "metamigo"
ports:
- 127.0.0.1:5433:5432
volumes:
metamigo-data:
driver: local

View file

@ -0,0 +1,96 @@
version: "3.4"
x-global-vars:
&common-global-variables
TZ: Etc/UTC
x-metamigo-vars:
&common-metamigo-variables
DATABASE_HOST: "metamigo-postgresql"
DATABASE_NAME: "metamigo"
DATABASE_ROOT_OWNER: "root"
DATABASE_ROOT_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD}
DATABASE_OWNER: "metamigo"
DATABASE_PASSWORD: ${METAMIGO_DATABASE_PASSWORD}
DATABASE_VISITOR: "app_visitor"
DATABASE_AUTHENTICATOR: "app_graphile_auth"
DATABASE_AUTHENTICATOR_PASSWORD: ${METAMIGO_DATABASE_AUTHENTICATOR_PASSWORD}
DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo"
WORKER_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo"
SHADOW_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo_shadow"
ROOT_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/template1"
APP_ROOT_DATABASE_URL: "postgresql://root:${METAMIGO_DATABASE_ROOT_PASSWORD}@metamigo-postgresql/metamigo"
DATABASE_AUTH_URL: "postgresql://app_graphile_auth:${METAMIGO_DATABASE_AUTHENTICATOR_PASSWORD}@metamigo-postgresql/metamigo"
CORS_ALLOWED_ORIGINS: "https://metamigo-api,${METAMIGO_DOMAIN},http://localhost:3000,http://127.0.0.1:3000"
FRONTEND_URL: ${METAMIGO_DOMAIN}
API_URL: "http://metamigo-api:3001"
NEXTAUTH_URL: ${METAMIGO_DOMAIN}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE}
NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64}
NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64}
GITLAB_EMAIL_ADDRESS: ${GITLAB_EMAIL_ADDRESS}
GITLAB_ID: ${GITLAB_ID}
GITLAB_SECRET: ${GITLAB_SECRET}
SIGNALD_ENABLED: "true"
SIGNALD_SOCKET: /signald/signald.sock
services:
metamigo-api:
build:
context: .
dockerfile: ./apps/metamigo-cli/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo:${LINK_STACK_VERSION}
container_name: metamigo-api
restart: ${RESTART}
command: [ "api" ]
ports:
- 127.0.0.1:8003:3001
environment: *common-metamigo-variables
volumes:
- ./signald-state:/signald
depends_on:
- metamigo-postgresql
- signald
metamigo-frontend:
build:
context: .
dockerfile: ./apps/metamigo-frontend/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-frontend:${LINK_STACK_VERSION}
container_name: metamigo-frontend
restart: ${RESTART}
expose:
- "3000"
ports:
- 127.0.0.1:8002:3000
depends_on:
- metamigo-api
environment:
<<: *common-metamigo-variables
VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST}
VIRTUAL_PORT: 3000
metamigo-worker:
build:
context: .
dockerfile: ./apps/metamigo-cli/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo:${LINK_STACK_VERSION}
container_name: metamigo-worker
restart: ${RESTART}
command: [ "worker" ]
environment: *common-metamigo-variables
depends_on:
- metamigo-api
signald:
container_name: signald
build: ./docker/signald
image: registry.gitlab.com/digiresilience/link/link-stack/signald:${LINK_STACK_VERSION}
restart: ${RESTART}
user: ${CURRENT_UID}
volumes:
- ./signald-state:/signald
environment:
<<: *common-global-variables

View file

@ -0,0 +1,11 @@
version: "3.4"
services:
nginx-proxy:
container_name: nginx-proxy
build: ./docker/nginx-proxy
restart: ${RESTART}
ports:
- "8080:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro

View file

@ -0,0 +1,18 @@
version: "3.4"
services:
opensearch:
container_name: opensearch
build: ./docker/opensearch
image: registry.gitlab.com/digiresilience/link/link-stack/opensearch:${LINK_STACK_VERSION}
restart: ${RESTART}
opensearch-dashboards:
container_name: opensearch-dashboards
build: ./docker/opensearch-dashboards
image: registry.gitlab.com/digiresilience/link/link-stack/opensearch-dashboards:${LINK_STACK_VERSION}
restart: ${RESTART}
volumes:
opensearch-data:
driver: local

View file

@ -1,323 +0,0 @@
version: "3.4"
x-global-vars:
&common-global-variables
TZ: Etc/UTC
x-zammad-vars:
&common-zammad-variables
MEMCACHE_SERVERS: "zammad-memcached:11211"
REDIS_URL: "redis://zammad-redis:6379"
ENABLE_EXPERIMENTAL_MOBILE_FRONTEND: "true"
x-metamigo-vars:
&common-metamigo-variables
DATABASE_HOST: "metamigo-postgresql"
DATABASE_NAME: "metamigo"
DATABASE_ROOT_OWNER: "root"
DATABASE_ROOT_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD}
DATABASE_OWNER: "metamigo"
DATABASE_PASSWORD: ${METAMIGO_DATABASE_PASSWORD}
DATABASE_VISITOR: "app_visitor"
DATABASE_AUTHENTICATOR: "app_graphile_auth"
DATABASE_AUTHENTICATOR_PASSWORD: ${METAMIGO_DATABASE_AUTHENTICATOR_PASSWORD}
DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo"
WORKER_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo"
SHADOW_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/metamigo_shadow"
ROOT_DATABASE_URL: "postgresql://metamigo:${METAMIGO_DATABASE_PASSWORD}@metamigo-postgresql/template1"
APP_ROOT_DATABASE_URL: "postgresql://root:${METAMIGO_DATABASE_ROOT_PASSWORD}@metamigo-postgresql/metamigo"
DATABASE_AUTH_URL: "postgresql://app_graphile_auth:${METAMIGO_DATABASE_AUTHENTICATOR_PASSWORD}@metamigo-postgresql/metamigo"
CORS_ALLOWED_ORIGINS: "https://metamigo-api,${METAMIGO_DOMAIN},http://localhost:3000,http://127.0.0.1:3000"
FRONTEND_URL: ${METAMIGO_DOMAIN}
API_URL: "http://metamigo-api:3001"
NEXTAUTH_URL: ${METAMIGO_DOMAIN}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE}
NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64}
NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64}
GITLAB_EMAIL_ADDRESS: ${GITLAB_EMAIL_ADDRESS}
GITLAB_ID: ${GITLAB_ID}
GITLAB_SECRET: ${GITLAB_SECRET}
SIGNALD_ENABLED: "true"
SIGNALD_SOCKET: /signald/signald.sock
services:
zammad-elasticsearch:
container_name: zammad-elasticsearch
environment:
discovery.type: single-node
ES_JAVA_OPTS: -Xms750m -Xmx750m
xpack.security.enabled: false
<<: *common-global-variables
build: ./docker/elasticsearch
image: registry.gitlab.com/digiresilience/link/link-stack/zammad-elasticsearch
restart: ${RESTART}
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
zammad-init:
platform: linux/x86_64
container_name: zammad-init
command: [ "zammad-init" ]
depends_on:
- zammad-postgresql
environment:
<<: [ *common-zammad-variables, *common-global-variables ]
POSTGRESQL_USER: zammad
POSTGRESQL_PASS: ${ZAMMAD_DATABASE_PASSWORD}
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad
restart: on-failure
volumes:
- zammad-data:/opt/zammad
zammad-memcached:
container_name: zammad-memcached
command: memcached -m 256M
build: ./docker/memcached
image: registry.gitlab.com/digiresilience/link/link-stack/zammad-memcached
restart: ${RESTART}
environment:
<<: *common-global-variables
zammad-nginx:
platform: linux/x86_64
container_name: zammad-nginx
command: [ "zammad-nginx" ]
expose:
- "8080"
ports:
- 127.0.0.1:8001:8080
depends_on:
- zammad-railsserver
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad
restart: ${RESTART}
environment:
<<: *common-global-variables
NGINX_SERVER_SCHEME: https
VIRTUAL_HOST: ${ZAMMAD_VIRTUAL_HOST}
VIRTUAL_PORT: 8080
volumes:
- zammad-data:/opt/zammad
zammad-postgresql:
container_name: zammad-postgresql
environment:
<<: *common-global-variables
POSTGRES_USER: zammad
POSTGRES_PASSWORD: ${ZAMMAD_DATABASE_PASSWORD}
build: ./docker/postgresql
image: registry.gitlab.com/digiresilience/link/link-stack/postgresql
restart: ${RESTART}
ports:
- 127.0.0.1:5432:5432
volumes:
- postgresql-data:/var/lib/postgresql/data
zammad-railsserver:
platform: linux/x86_64
container_name: zammad-railsserver
command: [ "zammad-railsserver" ]
depends_on:
- zammad-memcached
- zammad-postgresql
- zammad-redis
environment:
<<: [ *common-global-variables, *common-zammad-variables ]
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad
restart: ${RESTART}
volumes:
- zammad-data:/opt/zammad
zammad-redis:
container_name: zammad-redis
build: ./docker/redis
image: registry.gitlab.com/digiresilience/link/link-stack/zammad-redis
restart: ${RESTART}
environment:
<<: *common-global-variables
zammad-scheduler:
platform: linux/x86_64
container_name: zammad-scheduler
command: [ "zammad-scheduler" ]
depends_on:
- zammad-memcached
- zammad-railsserver
- zammad-redis
environment:
<<: [ *common-global-variables, *common-zammad-variables ]
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad
restart: ${RESTART}
volumes:
- zammad-data:/opt/zammad
zammad-websocket:
platform: linux/x86_64
container_name: zammad-websocket
command: [ "zammad-websocket" ]
depends_on:
- zammad-memcached
- zammad-railsserver
- zammad-redis
environment:
<<: [ *common-global-variables, *common-zammad-variables ]
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad
restart: ${RESTART}
volumes:
- zammad-data:/opt/zammad
opensearch:
container_name: opensearch
build: ./docker/opensearch
restart: ${RESTART}
volumes:
- opensearch-data:/usr/share/opensearch/data
opensearch-dashboards:
container_name: opensearch-dashboards
build: ./docker/opensearch-dashboards
restart: ${RESTART}
metamigo-postgresql:
build: ./docker/postgresql
image: registry.gitlab.com/digiresilience/link/link-stack/postgresql
container_name: metamigo-postgresql
restart: ${RESTART}
volumes:
- metamigo-data:/var/lib/postgresql/data
- ./scripts/bootstrap-metamigo.sh:/docker-entrypoint-initdb.d/bootstrap-metamigo.sh
environment:
<<: *common-metamigo-variables
POSTGRES_PASSWORD: ${METAMIGO_DATABASE_ROOT_PASSWORD}
POSTGRES_USER: "root"
POSTGRES_DB: "metamigo"
ports:
- 127.0.0.1:5435:5432
metamigo-api:
build:
context: .
dockerfile: ./apps/metamigo-cli/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo
container_name: metamigo-api
restart: ${RESTART}
command: [ "api" ]
ports:
- 127.0.0.1:8003:3001
environment: *common-metamigo-variables
volumes:
- ./signald-state:/signald
depends_on:
- metamigo-postgresql
- signald
metamigo-frontend:
build:
context: .
dockerfile: ./apps/metamigo-frontend/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-frontend
container_name: metamigo-frontend
restart: ${RESTART}
expose:
- "3000"
ports:
- 127.0.0.1:8002:3000
# depends_on:
# - metamigo-api
environment:
<<: *common-metamigo-variables
VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST}
VIRTUAL_PORT: 3000
metamigo-worker:
build:
context: .
dockerfile: ./apps/metamigo-cli/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo
container_name: metamigo-worker
restart: ${RESTART}
command: [ "worker" ]
environment: *common-metamigo-variables
depends_on:
- metamigo-api
signald:
container_name: signald
build: ./docker/signald
image: registry.gitlab.com/digiresilience/link/link-stack/signald
restart: ${RESTART}
user: ${CURRENT_UID}
volumes:
- ./signald-state:/signald
environment:
<<: *common-global-variables
# nginx-proxy:
# container_name: nginx-proxy
# build: ./docker/nginx-proxy
# restart: ${RESTART}
# ports:
# - "80:80"
# volumes:
# - /var/run/docker.sock:/tmp/docker.sock:ro
link:
container_name: link
restart: ${RESTART}
build:
context: .
dockerfile: ./apps/link/Dockerfile
expose:
- "3000"
ports:
- "8004:3000"
environment:
ZAMMAD_PROXY_URL: ${ZAMMAD_PROXY_URL}
ZAMMAD_API_TOKEN: ${ZAMMAD_API_TOKEN}
ZAMMAD_VIRUAL_HOST: ${ZAMMAD_VIRTUAL_HOST}
LINK_URL: ${LINK_URL}
LEAFCUTTER_URL: http://leafcutter:3000
METAMIGO_URL: http://metamigo-frontend:3000
ZAMMAD_URL: http://localhost:8001
NEXTAUTH_URL: ${LINK_URL}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE}
NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64}
NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64}
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
leafcutter:
container_name: leafcutter
restart: ${RESTART}
build:
context: .
dockerfile: ./apps/leafcutter/Dockerfile
expose:
- "3000"
ports:
- "8005:3000"
environment:
LINK_EMBEDDED: "true"
NEXTAUTH_URL: ${LINK_URL}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_AUDIENCE: ${NEXTAUTH_AUDIENCE}
NEXTAUTH_SIGNING_KEY_B64: ${NEXTAUTH_SIGNING_KEY_B64}
NEXTAUTH_ENCRYPTION_KEY_B64: ${NEXTAUTH_ENCRYPTION_KEY_B64}
volumes:
elasticsearch-data:
driver: local
postgresql-data:
driver: local
zammad-data:
driver: local
metamigo-data:
driver: local
opensearch-data:
driver: local

147
docker-compose.zammad.yml Normal file
View file

@ -0,0 +1,147 @@
version: "3.4"
x-global-vars: &common-global-variables
TZ: Etc/UTC
x-zammad-vars: &common-zammad-variables
MEMCACHE_SERVERS: "zammad-memcached:11211"
REDIS_URL: "redis://zammad-redis:6379"
ENABLE_EXPERIMENTAL_MOBILE_FRONTEND: "true"
services:
zammad-elasticsearch:
container_name: zammad-elasticsearch
environment:
discovery.type: single-node
ES_JAVA_OPTS: -Xms750m -Xmx750m
xpack.security.enabled: false
<<: *common-global-variables
build: ./docker/elasticsearch
image: registry.gitlab.com/digiresilience/link/link-stack/elasticsearch:${LINK_STACK_VERSION}
restart: ${RESTART}
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
zammad-init:
platform: linux/x86_64
container_name: zammad-init
command: ["zammad-init"]
depends_on:
- zammad-postgresql
environment:
<<: [*common-zammad-variables, *common-global-variables]
POSTGRESQL_USER: zammad
POSTGRESQL_PASS: ${ZAMMAD_DATABASE_PASSWORD}
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad:${LINK_STACK_VERSION}
restart: on-failure
volumes:
- zammad-data:/opt/zammad
zammad-memcached:
container_name: zammad-memcached
command: memcached -m 256M
build: ./docker/memcached
image: registry.gitlab.com/digiresilience/link/link-stack/memcached:${LINK_STACK_VERSION}
restart: ${RESTART}
environment:
<<: *common-global-variables
zammad-nginx:
platform: linux/x86_64
container_name: zammad-nginx
command: ["zammad-nginx"]
expose:
- "8080"
ports:
- 127.0.0.1:8001:8080
depends_on:
- zammad-railsserver
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad:${LINK_STACK_VERSION}
restart: ${RESTART}
environment:
<<: *common-global-variables
NGINX_SERVER_SCHEME: https
VIRTUAL_HOST: ${ZAMMAD_VIRTUAL_HOST}
VIRTUAL_PORT: 8080
volumes:
- zammad-data:/opt/zammad
zammad-postgresql:
container_name: zammad-postgresql
environment:
<<: *common-global-variables
POSTGRES_USER: zammad
POSTGRES_PASSWORD: ${ZAMMAD_DATABASE_PASSWORD}
build: ./docker/postgresql
image: registry.gitlab.com/digiresilience/link/link-stack/postgresql:${LINK_STACK_VERSION}
restart: ${RESTART}
ports:
- 127.0.0.1:5432:5432
volumes:
- postgresql-data:/var/lib/postgresql/data
zammad-railsserver:
platform: linux/x86_64
container_name: zammad-railsserver
command: ["zammad-railsserver"]
depends_on:
- zammad-memcached
- zammad-postgresql
- zammad-redis
environment:
<<: [*common-global-variables, *common-zammad-variables]
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad:${LINK_STACK_VERSION}
restart: ${RESTART}
volumes:
- zammad-data:/opt/zammad
zammad-redis:
container_name: zammad-redis
build: ./docker/redis
image: registry.gitlab.com/digiresilience/link/link-stack/redis:${LINK_STACK_VERSION}
restart: ${RESTART}
environment:
<<: *common-global-variables
zammad-scheduler:
platform: linux/x86_64
container_name: zammad-scheduler
command: ["zammad-scheduler"]
depends_on:
- zammad-memcached
- zammad-railsserver
- zammad-redis
environment:
<<: [*common-global-variables, *common-zammad-variables]
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad:${LINK_STACK_VERSION}
restart: ${RESTART}
volumes:
- zammad-data:/opt/zammad
zammad-websocket:
platform: linux/x86_64
container_name: zammad-websocket
command: ["zammad-websocket"]
depends_on:
- zammad-memcached
- zammad-railsserver
- zammad-redis
environment:
<<: [*common-global-variables, *common-zammad-variables]
build: ./docker/zammad
image: registry.gitlab.com/digiresilience/link/link-stack/zammad:${LINK_STACK_VERSION}
restart: ${RESTART}
volumes:
- zammad-data:/opt/zammad
volumes:
elasticsearch-data:
driver: local
postgresql-data:
driver: local
zammad-data:
driver: local

View file

@ -9,6 +9,21 @@
"dev:metamigo": "make dev-metamigo && dotenv -- turbo run dev --concurrency 30 --filter=!link --filter=!leafcutter",
"migrate": "dotenv -- npm run migrate --workspace=@digiresilience/metamigo-cli",
"fmt": "turbo run fmt",
"docker:all:up": "docker compose -f docker-compose.zammad.yml -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml -f docker-compose.opensearch.yml -f docker-compose.leafcutter.yml -f docker-compose.link.yml up -d",
"docker:all:down": "docker compose -f docker-compose.zammad.yml -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml -f docker-compose.opensearch.yml -f docker-compose.leafcutter.yml -f docker-compose.link.yml down",
"docker:all:build": "docker compose -f docker-compose.zammad.yml -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml -f docker-compose.opensearch.yml -f docker-compose.leafcutter.yml -f docker-compose.link.yml up --build -d",
"docker:link:dev:up": "docker compose -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml -f docker-compose.zammad.yml up -d",
"docker:link:dev:down": "docker compose -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml -f docker-compose.zammad.yml down",
"docker:link:up": "docker compose -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml -f docker-compose.zammad.yml -f docker-compose.link.yml up -d",
"docker:link:down": "docker compose -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml -f docker-compose.zammad.yml -f docker-compose.link.yml down",
"docker:leafcutter:dev:up": "docker compose -f docker-compose.opensearch.yml up -d",
"docker:leafcutter:dev:down": "docker compose -f docker-compose.opensearch.yml down",
"docker:leafcutter:up": "docker compose -f docker-compose.opensearch.yml -f docker-compose.leafcutter.yml up -d",
"docker:leafcutter:down": "docker compose -f docker-compose.opensearch.yml -f docker-compose.leafcutter.yml down",
"docker:metamigo:dev:up": "docker compose -f docker-compose.metamigo-postgresql.yml -f docker-compose.zammad.yml up -d",
"docker:metamigo:dev:down": "docker compose -f docker-compose.metamigo-postgresql.yml -f docker-compose.zammad.yml down",
"docker:metamigo:up": "docker compose -f docker-compose.zammad.yml -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml up -d",
"docker:metamigo:down": "docker compose -f docker-compose.zammad.yml -f docker-compose.metamigo-postgresql.yml -f docker-compose.metamigo.yml down",
"upgrade:setup": "npm i -g npm-check-updates",
"upgrade:check": "ncu -ws -x graphql",
"upgrade:all": "ncu -ws -u -x graphql"

View file

@ -1,18 +0,0 @@
.PHONY: fmt test yarn
.npmrc:
echo '@guardianproject-ops:registry=https://gitlab.com/api/v4/packages/npm/' > .npmrc
echo '//gitlab.com/api/v4/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
yarn:
yarn
test: yarn
mkdir -p coverage
yarn lint
yarn test
publish: test .npmrc
npm publish

View file

@ -11,7 +11,7 @@ We recommend using [@digiresilience/amigo-dev][amigo-dev] to manage your dev dep
But if you want to do it manually, then:
```console
$ yarn add -D @digiresilience/babel-preset-amigo
$ npm install --save-dev @digiresilience/babel-preset-amigo
```
# Usage

View file

@ -11,7 +11,7 @@ We recommend using [@digiresilience/amigo-dev][amigo-dev] to manage your dev dep
But if you want to do it manually, then:
```console
$ yarn add -D @digiresilience/eslint-config-amigo
$ npm install --save-dev @digiresilience/eslint-config-amigo
```
# Usage

View file

@ -8,6 +8,4 @@ coverage
*.log
package-lock.json
.npmrc
.yalc
yalc.lock
junit.xml

View file

@ -5,10 +5,7 @@
Makefile
.gitlab-ci.yml
coverage
.yarnrc*
jest*
tsconfig*
*.log
test*
.yalc
yalc.lock

View file

@ -1,39 +0,0 @@
test: build
mkdir -p coverage
yarn test
.PHONY: build
build: node_modules/
yarn build
lint:
yarn test:lint
fmt:
yarn fix:prettier
yarn fix:lint
doc:
yarn doc
publish: test
npm publish
# always run yarn when we are in the CI
node_modules/: .npmrc
@(test -d node_modules && test -z "${CI_JOB_TOKEN}") || yarn
.npmrc:
ifdef CI_JOB_TOKEN
echo '@guardianproject-ops:registry=https://gitlab.com/api/v4/packages/npm/' > .npmrc
echo '@digiresilience:registry=https://gitlab.com/api/v4/packages/npm/' > .npmrc
echo '//gitlab.com/api/v4/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
endif
clean:
rm -rf build tmp coverage yarn-error.log
distclean: clean
rm -rf node_modules

View file

@ -1,9 +0,0 @@
version: "3.1"
services:
db_test:
image: postgres:13
environment:
POSTGRES_PASSWORD: amigo
POSTGRES_USER: postgres
ports:
- "127.0.0.1:5436:5432"

View file

@ -1,38 +0,0 @@
test: build
mkdir -p coverage
yarn test
.PHONY: build
build: node_modules/
yarn build
lint:
yarn test:lint
fmt:
yarn fix:prettier
yarn fix:lint
doc:
yarn doc
publish: test
npm publish
node_modules/: .npmrc
test -d node_modules || yarn
.npmrc:
ifdef CI_JOB_TOKEN
echo '@guardianproject-ops:registry=https://gitlab.com/api/v4/packages/npm/' > .npmrc
echo '@digiresilience:registry=https://gitlab.com/api/v4/packages/npm/' >> .npmrc
echo '//gitlab.com/api/v4/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
endif
clean:
rm -rf build tmp coverage yarn-error.log
distclean: clean
rm -rf node_modules

View file

@ -8,6 +8,4 @@ coverage
*.log
package-lock.json
.npmrc
.yalc
yalc.lock
junit.xml

View file

@ -9,5 +9,3 @@ jest*
tsconfig*
*.log
test*
.yalc
yalc.lock

View file

@ -8,7 +8,7 @@ export const configSchema = {
connection: {
doc: "The postgres connection url.",
format: "uri",
default: "postgresql://metamigo:metamigo@127.0.0.1:5435/metamigo_dev",
default: "postgresql://metamigo:metamigo@127.0.0.1:5433/metamigo_dev",
env: "METAMIGO_DATABASE_URL",
sensitive: true,
},
@ -29,7 +29,7 @@ export const configSchema = {
connection: {
doc: "The postgres connection url for the worker database.",
format: "uri",
default: "postgresql://metamigo:metamigo@127.0.0.1:5435/metamigo_dev",
default: "postgresql://metamigo:metamigo@127.0.0.1:5433/metamigo_dev",
env: "METAMIGO_WORKER_DATABASE_URL",
},
concurrency: {
@ -55,14 +55,14 @@ export const configSchema = {
appRootConnection: {
doc: "The postgres root/superuser connection url for development mode so PG can watch the schema changes, this is strangely named in the postgraphile API 'ownerConnectionString'",
format: String,
default: "postgresql://postgres:metamigo@127.0.0.1:5435/metamigo_dev",
default: "postgresql://postgres:metamigo@127.0.0.1:5433/metamigo_dev",
env: "METAMIGO_APP_ROOT_DATABASE_URL",
},
authConnection: {
doc: "The postgres connection URL for postgraphile, must not be superuser and must have limited privs.",
format: String,
default:
"postgresql://metamigo_graphile_auth:metamigo@127.0.0.1:5435/metamigo_dev",
"postgresql://metamigo_graphile_auth:metamigo@127.0.0.1:5433/metamigo_dev",
env: "METAMIGO_DATABASE_AUTH_URL",
},
visitor: {
@ -88,14 +88,14 @@ export const configSchema = {
shadowConnection: {
doc: "The shadow databse connection url used by postgraphile-migrate. Not needed in production.",
format: "uri",
default: "postgresql://metamigo:metamigo@127.0.0.1:5435/metamigo_shadow",
default: "postgresql://metamigo:metamigo@127.0.0.1:5433/metamigo_shadow",
env: "METAMIGO_SHADOW_DATABASE_URL",
sensitive: true,
},
rootConnection: {
doc: "The postgres root/superuser connection url for testing only, database must NOT be the app database. Not needed in production.",
format: "uri",
default: "postgresql://postgres:metamigo@127.0.0.1:5435/template1",
default: "postgresql://postgres:metamigo@127.0.0.1:5433/template1",
env: "METAMIGO_ROOT_DATABASE_URL",
sensitive: true,
},
@ -363,10 +363,10 @@ export interface INextAuthConfig {
encryptionKey: string;
signingKeyB64: string;
encryptionKeyB64: string;
google?: { id: string; secret: string };
github?: { id: string; secret: string };
gitlab?: { id: string; secret: string };
cognito?: { id: string; secret: string; domain: string };
google?: { id: string; secret: string; };
github?: { id: string; secret: string; };
gitlab?: { id: string; secret: string; };
cognito?: { id: string; secret: string; domain: string; };
}
export interface ICFAccessConfig {

View file

@ -1,5 +1,4 @@
const { spawn } = require("child_process");
const findWorkspaceRoot = require("find-yarn-workspace-root");
if (process.env.CI) {
process.exit(0);
@ -21,7 +20,7 @@ spawn(
"--no-owner",
"--exclude-schema=graphile_migrate",
"--exclude-schema=graphile_worker",
`--file=${findWorkspaceRoot()}/data/schema.sql`,
`--file=../../data/schema.sql`,
connectionString,
],
{

View file

@ -1,37 +0,0 @@
test: build
mkdir -p coverage
yarn test
.PHONY: build
build: node_modules/
yarn build
lint:
yarn test:lint
fmt:
yarn fix:prettier
yarn fix:lint
doc:
yarn doc
publish: test
npm publish
node_modules/: .npmrc
test -d node_modules || yarn
.npmrc:
ifdef CI_JOB_TOKEN
echo '@guardianproject-ops:registry=https://gitlab.com/api/v4/packages/npm/' > .npmrc
echo '//gitlab.com/api/v4/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
endif
clean:
rm -rf build tmp coverage yarn-error.log
distclean: clean
rm -rf node_modules

View file

@ -7,7 +7,7 @@ What's this all about? Watch this [video from Stuart Sierra](https://www.youtube
## Install
```console
$ yarn add -D @digiresilience/montar
$ npm install --save-dev @digiresilience/montar
```
## Usage

View file

@ -1,18 +0,0 @@
.PHONY: test yarn publish
.npmrc:
echo '@guardianproject-ops:registry=https://gitlab.com/api/v4/packages/npm/' > .npmrc
echo '//gitlab.com/api/v4/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
echo '//gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}' >> .npmrc
yarn:
yarn
test: yarn
mkdir -p coverage
yarn lint
yarn test
publish: test .npmrc
npm publish

View file

@ -11,7 +11,7 @@ We recommend using [@digiresilience/amigo-dev][amigo-dev] to manage your dev dep
But if you want to do it manually, then:
```console
$ yarn add -D @digiresilience/tsconfig-amigo
$ npm install --save-dev @digiresilience/tsconfig-amigo
```
# Usage