Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixes_1098/ui_server_heathcheck #1100

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions Dockerfile.api_server
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,19 @@ RUN chown -R server:server /shared-fs \
/usr/local/bin/wait-for-it \
/usr/local/bin/migration-helper.sh

# After copying necessary files
COPY ./wsgi ./wsgi

# Set permissions and ownership
RUN chown -R server:server /shared-fs \
/var/www/oasis \
&& chmod +x ./asgi/run-asgi.sh \
/usr/local/bin/startup \
/usr/local/bin/wait-for-it \
/usr/local/bin/migration-helper.sh \
/var/www/oasis/wsgi/run-wsgi.sh


USER server
RUN OASIS_API_SECRET_KEY=supersecret python3 manage.py collectstatic --noinput
ENV OASIS_SERVER_DB_ENGINE django.db.backends.mysql
Expand Down
11 changes: 5 additions & 6 deletions compose/debug.docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
version: '3.4'
volumes:
server-db-OasisData:
celery-db-OasisData:
Expand Down Expand Up @@ -228,12 +227,12 @@ services:
image: coreoasis/oasisui_app:${VERS_UI:-latest}
container_name: oasisui_app
environment:
- API_IP=server:8000/api/
- API_VERSION=v2
- API_SHARE_FILEPATH=./downloads
- OASIS_ENVIRONMENT=oasis_localhost
- API_VERSION=v2
- API_IP=server:8000/${API_VERSION}/
- API_SHARE_FILEPATH=./downloads
- OASIS_ENVIRONMENT=oasis_localhost
ports:
- 8080:3838
- 8080:3838
portainer:
restart: always
image: portainer/portainer:latest
Expand Down
10 changes: 5 additions & 5 deletions compose/s3.docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -233,12 +233,12 @@ services:
image: coreoasis/oasisui_app:${VERS_UI:-latest}
container_name: oasisui_app
environment:
- API_IP=server:8000/api/
- API_VERSION=v2
- API_SHARE_FILEPATH=./downloads
- OASIS_ENVIRONMENT=oasis_localhost
- API_VERSION=v2
- API_IP=server:8000/${API_VERSION}/
- API_SHARE_FILEPATH=./downloads
- OASIS_ENVIRONMENT=oasis_localhost
ports:
- 8080:3838
- 8080:3838
portainer:
restart: always
image: portainer/portainer:latest
Expand Down
328 changes: 328 additions & 0 deletions compose/traefik.docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,328 @@
volumes:
server-db-OasisData:
celery-db-OasisData:
filestore-OasisData:
traefik-certificates: # Traefik needs a volume to store certificates

x-shared-env: &shared-env
OASIS_DEBUG: 0
OASIS_KEEP_RUN_DIR: 0
OASIS_KEEP_LOCAL_DATA: 0
OASIS_KEEP_REMOTE_DATA: 0
OASIS_URL_SUB_PATH: 0
OASIS_CELERY_BROKER_URL: "amqp://rabbit:rabbit@broker:5672"
#OASIS_CELERY_BROKER_URL: "redis://broker:6379"
OASIS_SERVER_DB_HOST: server-db
OASIS_SERVER_DB_PASS: oasis
OASIS_SERVER_DB_USER: oasis
OASIS_SERVER_DB_NAME: oasis
OASIS_SERVER_DB_PORT: 5432
OASIS_SERVER_CHANNEL_LAYER_HOST: channel-layer
OASIS_SERVER_DB_ENGINE: django.db.backends.postgresql_psycopg2
OASIS_CELERY_DB_ENGINE: db+postgresql+psycopg2
OASIS_CELERY_DB_HOST: celery-db
OASIS_CELERY_DB_PASS: password
OASIS_CELERY_DB_USER: celery
OASIS_CELERY_DB_NAME: celery
OASIS_CELERY_DB_PORT: 5432
OASIS_TASK_CONTROLLER_QUEUE: task-controller

x-oasis-env-v1: &oasis-env-v1
OASIS_DEBUG: ${DEBUG:-0}
OASIS_RABBIT_HOST: broker
OASIS_RABBIT_PORT: 5672
OASIS_RABBIT_USER: rabbit
OASIS_RABBIT_PASS: rabbit
OASIS_CELERY_DB_ENGINE: db+postgresql+psycopg2
OASIS_CELERY_DB_HOST: celery-db
OASIS_CELERY_DB_PASS: password
OASIS_CELERY_DB_USER: celery
OASIS_CELERY_DB_NAME: celery
OASIS_CELERY_DB_PORT: 5432

x-volumes: &shared-volumes
- filestore-OasisData:/shared-fs:rw

services:
traefik:
image: traefik:v2.10
restart: unless-stopped
security_opt:
- no-new-privileges:true
command:
- "--log.level=DEBUG"
- "--ping.entryPoint=ping"
- "--ping=true"
- "--accesslog=true"
ports:
- "80:80" # The HTTP port
- "8081:8080" # The Traefik dashboard port
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro" # Allow Traefik to access Docker socket
- traefik-certificates:/certificates # Volume to store certificates
networks:
- web # Assign Traefik to the web network
logging:
driver: awslogs
options:
awslogs-region: eu-west-1
awslogs-group: "dev-Stack"
tag: "{{.Name}}/{{.ID}}"

server:
restart: always
image: coreoasis/api_server:dev
command: ["./wsgi/run-wsgi.sh"]
build:
context: ..
dockerfile: Dockerfile.api_server
ports:
- 8000:8000
- 51970:51970
links:
- server-db
- celery-db
- broker
environment:
<<: *shared-env
STARTUP_RUN_MIGRATIONS: "true"
OASIS_ADMIN_USER: admin
OASIS_ADMIN_PASS: password
volumes:
- filestore-OasisData:/shared-fs:rw
networks:
- web # Assign server to the web network

server_websocket:
restart: always
image: coreoasis/api_server:dev
command: ["./asgi/run-asgi.sh"]
links:
- server-db
- celery-db
- broker
ports:
- 8001:8001
environment:
<<: *shared-env
volumes:
- filestore-OasisData:/shared-fs:rw
networks:
- web # Assign server_websocket to the web network
logging:
driver: awslogs
options:
awslogs-region: eu-west-1
awslogs-group: "dev-Stack"
tag: "{{.Name}}/{{.ID}}"

v1-worker-monitor:
restart: always
image: coreoasis/api_server:dev
command: [celery, -A, 'src.server.oasisapi.celery_app_v1', worker, --loglevel=INFO,]
links:
- server-db
- celery-db
- broker
environment:
<<: *shared-env
volumes:
- filestore-OasisData:/shared-fs:rw
networks:
- web # Assign v1-worker-monitor to the web network

v2-worker-monitor:
restart: always
image: coreoasis/api_server:dev
command: [celery, -A, 'src.server.oasisapi.celery_app_v2', worker, --loglevel=INFO, -Q, celery-v2]
links:
- server-db
- celery-db
- broker
environment:
<<: *shared-env
volumes:
- filestore-OasisData:/shared-fs:rw
networks:
- web # Assign v2-worker-monitor to the web network

v2-task-controller:
restart: always
image: coreoasis/api_server:dev
command: [celery, -A, 'src.server.oasisapi.celery_app_v2', worker, --loglevel=INFO, -Q, task-controller]
links:
- server-db
- celery-db
- broker
environment:
<<: *shared-env
volumes:
- filestore-OasisData:/shared-fs:rw
networks:
- web # Assign v2-task-controller to the web network

celery-beat_v2:
restart: always
image: coreoasis/api_server:dev
command: [celery, -A, src.server.oasisapi.celery_app_v2, beat, --loglevel=INFO]
links:
- server-db
- celery-db
- broker
environment:
<<: *shared-env
volumes: *shared-volumes
networks:
- web # Assign celery-beat_v2 to the web network

stable-worker:
restart: always
image: coreoasis/model_worker:1.28.4
links:
- celery-db
- broker:mybroker
environment:
<<: *oasis-env-v1
OASIS_MODEL_DATA_DIRECTORY: /home/worker/model
OASIS_MODEL_SUPPLIER_ID: OasisLMF
OASIS_MODEL_ID: PiWind
OASIS_MODEL_VERSION_ID: '1.28.4'
volumes:
- ${OASIS_MODEL_DATA_DIR:-./data/static}:/home/worker/model:rw
- filestore-OasisData:/shared-fs:rw
networks:
- web # Assign stable-worker to the web network

# v1-worker:
# restart: always
# image: coreoasis/model_worker:dev
# build:
# context: ..
# dockerfile: Dockerfile.model_worker
# links:
# - celery-db
# - broker:mybroker
# environment:
# <<: *shared-env
# OASIS_MODEL_SUPPLIER_ID: OasisLMF
# OASIS_MODEL_ID: PiWind
# OASIS_MODEL_VERSION_ID: 'v1'
# OASIS_RUN_MODE: v1
# volumes:
# - ${OASIS_MODEL_DATA_DIR:-./data/static}:/home/worker/model:rw
# - filestore-OasisData:/shared-fs:rw
# networks:
# - web # Assign v1-worker to the web network

# v2-worker:
# restart: always
# image: coreoasis/model_worker:dev
# build:
# context: ..
# dockerfile: Dockerfile.model_worker
# links:
# - celery-db
# - broker:mybroker
# environment:
# <<: *shared-env
# OASIS_MODEL_SUPPLIER_ID: OasisLMF
# OASIS_MODEL_ID: PiWind
# OASIS_MODEL_VERSION_ID: 'v2'
# OASIS_RUN_MODE: v2
# volumes:
# - ${OASIS_MODEL_DATA_DIR:-./data/static}:/home/worker/model:rw
# - filestore-OasisData:/shared-fs:rw
# networks:
# - web # Assign v2-worker to the web network

server-db:
restart: always
image: postgres
environment:
- POSTGRES_DB=oasis
- POSTGRES_USER=oasis
- POSTGRES_PASSWORD=oasis
volumes:
- server-db-OasisData:/var/lib/postgresql/data:rw
ports:
- 33307:5432
networks:
- web # Assign server-db to the web network

celery-db:
restart: always
image: postgres
environment:
- POSTGRES_DB=celery
- POSTGRES_USER=celery
- POSTGRES_PASSWORD=password
volumes:
- celery-db-OasisData:/var/lib/postgresql/data:rw
ports:
- 33306:5432
networks:
- web # Assign celery-db to the web network

broker:
restart: always
image: rabbitmq:3.8.14-management
environment:
- RABBITMQ_DEFAULT_USER=rabbit
- RABBITMQ_DEFAULT_PASS=rabbit
ports:
- 5672:5672
- 15672:15672
networks:
- web # Assign broker to the web network

channel-layer:
restart: always
image: redis:5.0.7
ports:
- 6379:6379
networks:
- web # Assign channel-layer to the web network

user-interface:
restart: unless-stopped
image: coreoasis/oasisui_app:${VERS_UI:-latest}
container_name: oasisui_app
ports:
- 8080:3838
environment:
- API_VERSION=v2
- API_IP=server:8000/ # Correct URL format
- API_SHARE_FILEPATH=./downloads
- OASIS_ENVIRONMENT=oasis_localhost
labels:
- "traefik.enable=true"
- "traefik.http.routers.user-interface.rule=Host(`dev.renew-risk.com`)" # Route requests based on host
- "traefik.http.services.user-interface.loadbalancer.server.port=3838" # Define the service port
- "traefik.http.services.user-interface.loadbalancer.healthcheck.interval=30s"
- "traefik.http.services.user-interface.loadbalancer.healthcheck.timeout=10s"
- "traefik.http.services.user-interface.loadbalancer.sticky.cookie=true"
- "traefik.http.services.user-interface.loadBalancer.sticky.cookie.name=user_interface"
networks:
- web # Assign UI to the web network
logging:
driver: awslogs
options:
awslogs-region: eu-west-1
awslogs-group: "dev-Stack"
tag: "ui/{{.ID}}"

portainer:
restart: always
image: portainer/portainer:latest
ports:
- 8002:8002
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer_data:/data portainer/portainer
networks:
- web # Assign Portainer to the web network

networks:
web: # Create a dedicated network for Traefik and web services
external: false
Loading