correct entry script bug and allow config from env file

- A bug in `entry` caused the script to not change into the directory correctly.
This was corrected by marking the script as bash rather than sh.
- `install.sh` now stops a running service before updating
- `docker-compose.yml` now assigns a consistent container name for the app
- `docker-compose.yml` now uses environment variables or a `.env` file to
  assign container name and port mappings if available
- updated readme file with better instructions
This commit is contained in:
2024-02-29 16:37:12 -08:00
parent ca3d2f5540
commit 1a4756fda0
5 changed files with 63 additions and 14 deletions
+32 -6
View File
@@ -2,13 +2,39 @@
Packaging and installation tools for Streamline's "Streamline EMR" application.
## Usage
## Building
1. ensure you have docker access to this project's container registry on GitLab
2. run `package.sh` to generate a new application package
3. package will be stored to `build-packages/`
## Notes
- Example of running the app directly
```bash
docker run --rm -d --name streamline -p 3000:80 -p 6607:3306 -v ./data:/var/lib/mysql registry.gitlab.com/signalytic/client-external/streamline/streamline-emr:2.0
```
## Installing
1. extract the generated archive file in a temporary folder on the target system
2. run `install.sh`
## Running
### Production (systemd)
On a production system, `systemd` will manage the lifecycle of the application, e.g.
```
# enable and start the the application service
systemctl daemon-reload
systemctl enable streamline-emr
systemctl start streamline-emr
# stop the application service
systemctl stop streamline-emr
# restart the application service
systemctl restart streamline-emr
```
### Docker
In a docker environment, the application must be started manually. This is done by running the `entry` script, for example:
```
/var/signalytic/clientapps/streamline/streamline-emr/entry
```
## Configuration
Certain configuration options can be adjusted by setting environment variables or by defining these variables in a `.env` file stored in the same directory as the `docker-compose.yml` file. These variables are:
`APP_PORTS`: port mapping for the web app server (default: `3000:80`)
`DB_PORTS`: port mapping for the database server (default: `6607:3306`)
`CONTAINER_NAME`: name of the application container (default: `streamline-emr`)
+11 -3
View File
@@ -21,6 +21,15 @@ if [ "$EUID" -ne 0 ]
exit 1
fi
# stop any running systemd service if not running in a docker environment
if [ -f /.dockerenv ]; then
echo "Docker environment detected - skipping systemd installation"
else
echo "stopping system service"
systemctl stop streamline-emr
fi
set -e
# copy root files
@@ -33,9 +42,8 @@ for f in $(find $LOCATION/images -name "*.img");do
docker load -i $f
done
if [ -f /.dockerenv ]; then
echo "Docker environment detected - skipping systemd installation"
else
# install systemd service unless running in a docker environment
if [ ! -f /.dockerenv ]; then
echo "installing system service"
systemctl daemon-reload
systemctl enable streamline-emr
@@ -2,8 +2,9 @@ version: '3.9'
services:
streamline-emr:
image: registry.gitlab.com/signalytic/client-external/streamline/streamline-emr:2.0
container_name: ${CONTAINER_NAME:-streamline-emr}
volumes:
- '/var/signalytic/clientapps/streamline/streamline-emr/data:/var/lib/mysql'
ports:
- '3000:80'
- '6607:3306'
- ${APP_PORTS:-3000:80}
- ${DB_PORTS:-6607:3306}
@@ -1,5 +1,17 @@
#!/bin/sh
cd "$(dirname "${BASH_SOURCE[0]}")"
#!/bin/bash
APPROOT="$(dirname "${BASH_SOURCE[0]}")"
echo "entering app root: $APPROOT"
cd $APPROOT
echo "creating data folder (if necessary)"
mkdir -p data
docker compose up --force-recreate
echo "starting app"
docker compose up
echo "cleaning up"
docker compose down
echo "done."
+2
View File
@@ -0,0 +1,2 @@
APP_PORTS="3001:80"
DB_PORTS="6607:3306"