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. 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 1. ensure you have docker access to this project's container registry on GitLab
2. run `package.sh` to generate a new application package 2. run `package.sh` to generate a new application package
3. package will be stored to `build-packages/` 3. package will be stored to `build-packages/`
## Notes ## Installing
- Example of running the app directly 1. extract the generated archive file in a temporary folder on the target system
```bash 2. run `install.sh`
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
``` ## 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 exit 1
fi 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 set -e
# copy root files # copy root files
@@ -33,9 +42,8 @@ for f in $(find $LOCATION/images -name "*.img");do
docker load -i $f docker load -i $f
done done
if [ -f /.dockerenv ]; then # install systemd service unless running in a docker environment
echo "Docker environment detected - skipping systemd installation" if [ ! -f /.dockerenv ]; then
else
echo "installing system service" echo "installing system service"
systemctl daemon-reload systemctl daemon-reload
systemctl enable streamline-emr systemctl enable streamline-emr
@@ -2,8 +2,9 @@ version: '3.9'
services: services:
streamline-emr: streamline-emr:
image: registry.gitlab.com/signalytic/client-external/streamline/streamline-emr:2.0 image: registry.gitlab.com/signalytic/client-external/streamline/streamline-emr:2.0
container_name: ${CONTAINER_NAME:-streamline-emr}
volumes: volumes:
- '/var/signalytic/clientapps/streamline/streamline-emr/data:/var/lib/mysql' - '/var/signalytic/clientapps/streamline/streamline-emr/data:/var/lib/mysql'
ports: ports:
- '3000:80' - ${APP_PORTS:-3000:80}
- '6607:3306' - ${DB_PORTS:-6607:3306}
@@ -1,5 +1,17 @@
#!/bin/sh #!/bin/bash
cd "$(dirname "${BASH_SOURCE[0]}")"
APPROOT="$(dirname "${BASH_SOURCE[0]}")"
echo "entering app root: $APPROOT"
cd $APPROOT
echo "creating data folder (if necessary)"
mkdir -p data mkdir -p data
docker compose up --force-recreate
echo "starting app"
docker compose up
echo "cleaning up"
docker compose down docker compose down
echo "done."
+2
View File
@@ -0,0 +1,2 @@
APP_PORTS="3001:80"
DB_PORTS="6607:3306"