forked from asklyphe-public/asklyphe
Docker compose setup
This commit is contained in:
parent
24067eca99
commit
1370bc8a43
11 changed files with 240 additions and 5 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -1,2 +1,6 @@
|
||||||
.idea
|
.idea
|
||||||
/target
|
/target
|
||||||
|
# /nginx
|
||||||
|
database
|
||||||
|
database.bak
|
||||||
|
.env
|
||||||
|
|
16
Dockerfile.auth-frontend
Normal file
16
Dockerfile.auth-frontend
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
FROM rust:1.89.0 AS builder
|
||||||
|
|
||||||
|
WORKDIR /usr/src/asklyphe/
|
||||||
|
COPY asklyphe-auth-frontend asklyphe-auth-frontend
|
||||||
|
COPY asklyphe-common asklyphe-common
|
||||||
|
COPY lyphedb lyphedb
|
||||||
|
|
||||||
|
RUN cargo install --debug --path asklyphe-auth-frontend/
|
||||||
|
|
||||||
|
FROM debian:trixie-slim
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y libssl3 && rm -rf /var/lib/apt-get/lists/*
|
||||||
|
COPY --from=builder /usr/local/cargo/bin/asklyphe-auth-frontend /usr/local/bin/
|
||||||
|
COPY --from=builder /usr/src/asklyphe/asklyphe-auth-frontend/static /data/static
|
||||||
|
VOLUME /data
|
||||||
|
|
||||||
|
CMD ["asklyphe-auth-frontend"]
|
16
Dockerfile.authservice
Normal file
16
Dockerfile.authservice
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
FROM rust:1.89.0 AS builder
|
||||||
|
|
||||||
|
WORKDIR /usr/src/asklyphe/
|
||||||
|
COPY authservice authservice
|
||||||
|
COPY asklyphe-common asklyphe-common
|
||||||
|
COPY lyphedb lyphedb
|
||||||
|
|
||||||
|
RUN cargo install --debug --path authservice/
|
||||||
|
RUN cargo install --debug --path authservice/migration/
|
||||||
|
|
||||||
|
FROM debian:trixie-slim
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y libssl3 && rm -rf /var/lib/apt-get/lists/*
|
||||||
|
COPY --from=builder /usr/local/cargo/bin/authservice /usr/local/bin/
|
||||||
|
COPY --from=builder /usr/local/cargo/bin/migration /usr/local/bin/
|
||||||
|
|
||||||
|
CMD ["authservice"]
|
14
Dockerfile.bingservice
Normal file
14
Dockerfile.bingservice
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
FROM rust:1.89.0 AS builder
|
||||||
|
|
||||||
|
WORKDIR /usr/src/asklyphe/
|
||||||
|
COPY bingservice bingservice
|
||||||
|
COPY asklyphe-common asklyphe-common
|
||||||
|
COPY lyphedb lyphedb
|
||||||
|
|
||||||
|
RUN cargo install --debug --path bingservice/
|
||||||
|
|
||||||
|
FROM debian:trixie-slim
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y libssl3 && rm -rf /var/lib/apt-get/lists/*
|
||||||
|
COPY --from=builder /usr/local/cargo/bin/bingservice /usr/local/bin/
|
||||||
|
|
||||||
|
CMD ["bingservice"]
|
17
Dockerfile.frontend
Normal file
17
Dockerfile.frontend
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
FROM rust:1.89.0 AS builder
|
||||||
|
|
||||||
|
WORKDIR /usr/src/asklyphe/
|
||||||
|
COPY asklyphe-frontend asklyphe-frontend
|
||||||
|
COPY asklyphe-common asklyphe-common
|
||||||
|
COPY lyphedb lyphedb
|
||||||
|
COPY unit_converter unit_converter
|
||||||
|
|
||||||
|
RUN cargo install --debug --path asklyphe-frontend/
|
||||||
|
|
||||||
|
FROM debian:trixie-slim
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y libssl3 && rm -rf /var/lib/apt-get/lists/*
|
||||||
|
COPY --from=builder /usr/local/cargo/bin/asklyphe-frontend /usr/local/bin/
|
||||||
|
COPY --from=builder /usr/src/asklyphe/asklyphe-frontend/static /data/static
|
||||||
|
VOLUME /data
|
||||||
|
|
||||||
|
CMD ["asklyphe-frontend"]
|
14
Dockerfile.googleservice
Normal file
14
Dockerfile.googleservice
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
FROM rust:1.89.0 AS builder
|
||||||
|
|
||||||
|
WORKDIR /usr/src/asklyphe/
|
||||||
|
COPY googleservice googleservice
|
||||||
|
COPY asklyphe-common asklyphe-common
|
||||||
|
COPY lyphedb lyphedb
|
||||||
|
|
||||||
|
RUN cargo install --debug --path googleservice/
|
||||||
|
|
||||||
|
FROM debian:trixie-slim
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y libssl3 && rm -rf /var/lib/apt-get/lists/*
|
||||||
|
COPY --from=builder /usr/local/cargo/bin/googleservice /usr/local/bin/
|
||||||
|
|
||||||
|
CMD ["googleservice"]
|
14
Dockerfile.vorebot
Normal file
14
Dockerfile.vorebot
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
FROM rust:1.89.0 AS builder
|
||||||
|
|
||||||
|
WORKDIR /usr/src/asklyphe/
|
||||||
|
COPY vorebot vorebot
|
||||||
|
COPY asklyphe-common asklyphe-common
|
||||||
|
COPY lyphedb lyphedb
|
||||||
|
|
||||||
|
RUN cargo install --debug --path vorebot/
|
||||||
|
|
||||||
|
FROM debian:trixie-slim
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y libssl3 && rm -rf /var/lib/apt-get/lists/*
|
||||||
|
COPY --from=builder /usr/local/cargo/bin/vorebot /usr/local/bin/
|
||||||
|
|
||||||
|
CMD ["vorebot"]
|
|
@ -17,7 +17,7 @@ mod login;
|
||||||
|
|
||||||
use std::{env, process};
|
use std::{env, process};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::net::SocketAddr;
|
use std::net::{SocketAddr, ToSocketAddrs};
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::sync::atomic::{AtomicU64, Ordering};
|
use std::sync::atomic::{AtomicU64, Ordering};
|
||||||
|
@ -66,7 +66,7 @@ async fn main() {
|
||||||
env_logger::init();
|
env_logger::init();
|
||||||
let opts = Opts {
|
let opts = Opts {
|
||||||
bind_addr: env::var("BIND_ADDR").unwrap_or("0.0.0.0:5843".to_string()).parse().expect("Badly formed BIND_ADDR (Needs to be SocketAddr)"),
|
bind_addr: env::var("BIND_ADDR").unwrap_or("0.0.0.0:5843".to_string()).parse().expect("Badly formed BIND_ADDR (Needs to be SocketAddr)"),
|
||||||
nats_addr: env::var("NATS_ADDR").unwrap_or("127.0.0.1:4222".to_string()).parse().expect("Badly formed NATS_ADDR (Needs to be SocketAddr)"),
|
nats_addr: env::var("NATS_ADDR").unwrap_or("127.0.0.1:4222".to_string()).to_socket_addrs().expect("Badly formed NATS_ADDR (Needs to be SocketAddr)").nth(0).unwrap(),
|
||||||
nats_cert: env::var("NATS_CERT").expect("NATS_CERT needs to be set"),
|
nats_cert: env::var("NATS_CERT").expect("NATS_CERT needs to be set"),
|
||||||
nats_key: env::var("NATS_KEY").expect("NATS_KEY needs to be set"),
|
nats_key: env::var("NATS_KEY").expect("NATS_KEY needs to be set"),
|
||||||
asklyphe_url: env::var("ASKLYPHE_URL").unwrap_or("https://asklyphe.com".to_string()),
|
asklyphe_url: env::var("ASKLYPHE_URL").unwrap_or("https://asklyphe.com".to_string()),
|
||||||
|
|
|
@ -19,7 +19,7 @@ pub mod routes;
|
||||||
|
|
||||||
use std::{env, process};
|
use std::{env, process};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::net::SocketAddr;
|
use std::net::{SocketAddr, ToSocketAddrs};
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::sync::atomic::{AtomicU64, Ordering};
|
use std::sync::atomic::{AtomicU64, Ordering};
|
||||||
|
@ -85,7 +85,7 @@ async fn main() {
|
||||||
env_logger::init();
|
env_logger::init();
|
||||||
let opts = Opts {
|
let opts = Opts {
|
||||||
bind_addr: env::var("BIND_ADDR").unwrap_or("0.0.0.0:5842".to_string()).parse().expect("Badly formed BIND_ADDR (Needs to be SocketAddr)"),
|
bind_addr: env::var("BIND_ADDR").unwrap_or("0.0.0.0:5842".to_string()).parse().expect("Badly formed BIND_ADDR (Needs to be SocketAddr)"),
|
||||||
nats_addr: env::var("NATS_ADDR").unwrap_or("127.0.0.1:4222".to_string()).parse().expect("Badly formed NATS_ADDR (Needs to be SocketAddr)"),
|
nats_addr: env::var("NATS_ADDR").unwrap_or("127.0.0.1:4222".to_string()).to_socket_addrs().expect("Badly formed NATS_ADDR (Needs to be SocketAddr)").nth(0).unwrap(),
|
||||||
nats_cert: env::var("NATS_CERT").expect("NATS_CERT needs to be set"),
|
nats_cert: env::var("NATS_CERT").expect("NATS_CERT needs to be set"),
|
||||||
nats_key: env::var("NATS_KEY").expect("NATS_KEY needs to be set"),
|
nats_key: env::var("NATS_KEY").expect("NATS_KEY needs to be set"),
|
||||||
auth_url: env::var("AUTH_URL").unwrap_or("https://auth.asklyphe.com".to_string()),
|
auth_url: env::var("AUTH_URL").unwrap_or("https://auth.asklyphe.com".to_string()),
|
||||||
|
|
113
docker-compose.yml
Normal file
113
docker-compose.yml
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
services:
|
||||||
|
auth-frontend:
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- lyphenet
|
||||||
|
env_file: ".env"
|
||||||
|
depends_on:
|
||||||
|
- nats
|
||||||
|
- authservice
|
||||||
|
build:
|
||||||
|
dockerfile: Dockerfile.auth-frontend
|
||||||
|
volumes:
|
||||||
|
- auth_frontend_data:/data
|
||||||
|
image: asklyphe/auth-frontend
|
||||||
|
authservice:
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- lyphenet
|
||||||
|
env_file: ".env"
|
||||||
|
depends_on:
|
||||||
|
- nats
|
||||||
|
build:
|
||||||
|
dockerfile: Dockerfile.authservice
|
||||||
|
image: asklyphe/authservice
|
||||||
|
frontend:
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- lyphenet
|
||||||
|
env_file: ".env"
|
||||||
|
depends_on:
|
||||||
|
- nats
|
||||||
|
build:
|
||||||
|
dockerfile: Dockerfile.frontend
|
||||||
|
volumes:
|
||||||
|
- frontend_data:/data
|
||||||
|
image: asklyphe/frontend
|
||||||
|
# vorebot:
|
||||||
|
# restart: unless-stopped
|
||||||
|
# networks:
|
||||||
|
# - lyphenet
|
||||||
|
# - outer
|
||||||
|
# env_file: ".env"
|
||||||
|
# depends_on:
|
||||||
|
# - nats
|
||||||
|
# build:
|
||||||
|
# dockerfile: Dockerfile.vorebot
|
||||||
|
# image: asklyphe/vorebot
|
||||||
|
|
||||||
|
# bingservice:
|
||||||
|
# restart: unless-stopped
|
||||||
|
# networks:
|
||||||
|
# - lyphenet
|
||||||
|
# - outer
|
||||||
|
# env_file: ".env"
|
||||||
|
# depends_on:
|
||||||
|
# - nats
|
||||||
|
# build:
|
||||||
|
# dockerfile: Dockerfile.bingservice
|
||||||
|
# image: asklyphe/bingservice
|
||||||
|
# googleservice:
|
||||||
|
# restart: unless-stopped
|
||||||
|
# networks:
|
||||||
|
# - lyphenet
|
||||||
|
# env_file: ".env"
|
||||||
|
# depends_on:
|
||||||
|
# - nats
|
||||||
|
# - bingservice
|
||||||
|
# build:
|
||||||
|
# dockerfile: Dockerfile.googleservice
|
||||||
|
# image: asklyphe/googleservice
|
||||||
|
|
||||||
|
nats:
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- lyphenet
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
env_file: ".env"
|
||||||
|
image: nats:2.11.8
|
||||||
|
cmd: "nats-server -js"
|
||||||
|
db:
|
||||||
|
image: postgres:17
|
||||||
|
networks:
|
||||||
|
- lyphenet
|
||||||
|
env_file: ".env"
|
||||||
|
healthcheck:
|
||||||
|
test: ['CMD', 'pg_isready', '-U', 'postgres']
|
||||||
|
volumes:
|
||||||
|
- ./database:/var/lib/postgresql/data
|
||||||
|
proxy:
|
||||||
|
image: nginx:latest
|
||||||
|
networks:
|
||||||
|
- lyphenet
|
||||||
|
- outer
|
||||||
|
depends_on:
|
||||||
|
- frontend
|
||||||
|
- auth-frontend
|
||||||
|
volumes:
|
||||||
|
- ./nginx:/etc/nginx/conf.d
|
||||||
|
- frontend_data:/data/frontend
|
||||||
|
- auth_frontend_data:/data/auth-frontend
|
||||||
|
ports:
|
||||||
|
- "1234:80"
|
||||||
|
- "1235:81"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
lyphenet:
|
||||||
|
internal: true
|
||||||
|
outer:
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
frontend_data:
|
||||||
|
auth_frontend_data:
|
27
nginx/default.conf
Normal file
27
nginx/default.conf
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
server {
|
||||||
|
listen 81;
|
||||||
|
server_name 0.0.0.0;
|
||||||
|
access_log off;
|
||||||
|
|
||||||
|
location /static/ {
|
||||||
|
root /data/auth-frontend;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://auth-frontend:5843;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name 0.0.0.0;
|
||||||
|
access_log off;
|
||||||
|
|
||||||
|
location /static/ {
|
||||||
|
root /data/frontend;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://frontend:5842;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue