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

Fix docker setup #676

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
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
56 changes: 56 additions & 0 deletions docker/Dockerfile.local
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# syntax=docker/dockerfile:1
# Build UI
FROM node:16 as build_ui

ADD --keep-git-dir=false https://github.com/cairis-platform/cairis-ui.git#master /cairis-ui
RUN cd /cairis-ui && \
yarn install --ignore-engines && \
yarn run build

# Build CAIRIS backend
FROM python:3.12
LABEL "org.opencontainers.image.authors"="Shamal Faily <[email protected]>"
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
apache2 \
apache2-dev \
mariadb-client \
poppler-utils \
netpbm \
graphviz

#Installing Python modules
COPY requirements.txt /
COPY wsgi_requirements.txt /
RUN pip install wheel --break-system-packages && \
pip install -r requirements.txt -r wsgi_requirements.txt --break-system-packages

#Environment Variable starts from here
ENV CAIRIS_SRC=/cairis/cairis
ENV CAIRIS_CFG_DIR=/cairis/docker
ENV CAIRIS_CFG=/cairis.cnf
ENV PYTHONPATH=/cairis

# Copy from local repo
COPY cairis /cairis/cairis

# Grant permission to executable files
RUN chmod +x /cairis/cairis/bin/*.* && \
chmod +x /cairis/cairis/config/*.sh

COPY cairis.cnf /
COPY addAccount.sh /
COPY register_user.html /cairis/cairis/daemon/templates/security

# Copy UI build
COPY --from=build_ui /cairis-ui/dist /cairis/cairis/dist

EXPOSE 8000

RUN mkdir /tmpDocker && \
mkdir /images && \
chown www-data /images && \
chgrp www-data /images && \
chmod 1777 /tmpDocker

CMD ["mod_wsgi-express", "start-server", "/cairis/cairis/bin/cairis.wsgi", "--user", "www-data", "--group", "www-data"]
56 changes: 56 additions & 0 deletions docker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# INSTRUCTION TO BUILD AND BRING UP SETUP WITH DOCKER

## 1. Build docker image

By default, the cairis backend source code is fetched from github repo. The below script will help to build docker image locally.
You can specify the image version. By default, it is "latest".

```sh
./buildLocalImage.sh
```

## 2. Server startup and shutdown

To create and start containers in backgroud mode:

```sh
docker compose up -d
```

To view container logs:

```sh
docker compose logs -f
```

To stop:

```sh
docker compose stop
```

To start:

```sh
docker compose start
```

To stop and remove the containers:

```sh
docker compose down
```

Your data is persistent even you remove the containers. To completely delete all data:

```sh
$ docker volume rm cairis_cairisDocumentation cairis_cairisImage cairis_cairisMysqlData
```

## 3. Create a user

"cairis-CAIRIS-1" is the name of docker container of the cairis server.

```sh
docker exec -t cairis-CAIRIS-1 ./addAccount.sh [email protected] test TestUser
```
2 changes: 1 addition & 1 deletion docker/addAccount.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ USERNAME=$1
PASSWD=$2
FULLNAME=$3

$CAIRIS_SRC/bin/add_cairis_user.py $USERNAME $PASSWD $FULLNAME
python3 $CAIRIS_SRC/bin/add_cairis_user.py $USERNAME $PASSWD $FULLNAME
18 changes: 18 additions & 0 deletions docker/buildLocalImage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash
set -e

# Get version from parameter
VERSION=$1

if [[ "$VERSION" == "" ]]; then
VERSION=latest
fi

# Copy from local repo
cp -R ../cairis ./

# Build
docker build -t shamalfaily/cairis:$VERSION -f Dockerfile.local .

# Clean up
rm -rf cairis
54 changes: 54 additions & 0 deletions docker/compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: cairis
services:
cairis-mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=my-secret-pw
command: --thread_stack=256K --max_sp_recursion_depth=255 --log_bin_trust_function_creators=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- cairisMysqlData:/var/lib/mysql
- ./createdb.sql:/docker-entrypoint-initdb.d/00-createdb.sql:ro
- ./init-test-data.sh:/docker-entrypoint-initdb.d/01-init-test-data.sh:ro
- ../cairis/sql/init.sql:/sql/init.sql
- ../cairis/sql/procs.sql:/sql/procs.sql
networks:
- cairisnet
healthcheck:
test: ["CMD-SHELL", "[ -f /var/lib/mysql/db_init_done ] && mysql -h localhost -P 3306 -uroot -pmy-secret-pw -e \"SELECT 1\" && exit 0 || exit 1"]
interval: 1m
timeout: 10s
retries: 3
start_period: 2m30s
start_interval: 10s

cairis-docs:
image: shamalfaily/cairis-docs
depends_on:
- cairis-mysql
volumes:
- cairisDocumentation:/tmpDocker
- cairisImage:/images
networks:
- cairisnet

CAIRIS:
image: shamalfaily/cairis:latest
depends_on:
cairis-mysql:
condition: service_healthy
restart: true
ports:
- 80:8000
volumes:
- cairisDocumentation:/tmpDocker
- cairisImage:/images
networks:
- cairisnet

volumes:
cairisMysqlData:
cairisDocumentation:
cairisImage:

networks:
cairisnet:
13 changes: 13 additions & 0 deletions docker/init-test-data.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash
set -x

mysql --user=cairis_test --password=cairis_test --database=cairis_test_default < /sql/init.sql
mysql --user=cairis_test --password=cairis_test --database=cairis_test_default < /sql/procs.sql
mysql --user=root --password=my-secret-pw <<!
set global max_sp_recursion_depth = 255;
flush tables;
flush privileges;
!

# Set status
touch /var/lib/mysql/db_init_done
2 changes: 1 addition & 1 deletion docker/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ mako>=1.0.4
lxml>=3.6.4
openpyxl>=2.4.0
SQLAlchemy>=2.0.0
bcrypt>=3.1.6
bcrypt==3.1.6
python-magic>=0.4.15
email_validator>=1.0.5
xlsxwriter>=1.2.7