first implementation of improved docker

only devel version
This commit is contained in:
christian 2024-01-21 14:30:28 +01:00
parent 428a4c0386
commit 5205846b62
4 changed files with 66 additions and 15 deletions

View File

@ -109,6 +109,11 @@ COPY src ${INVENTREE_HOME}/src
COPY tasks.py ${INVENTREE_HOME}/tasks.py
RUN cd ${INVENTREE_HOME}/InvenTree && inv frontend-compile
COPY execute.sh ${INVENTREE_HOME}/execute.sh
RUN chmod +x ${INVENTREE_HOME}/execute.sh
COPY db_version ${INVENTREE_HOME}/db_version
# InvenTree production image:
# - Copies required files from local directory
# - Starts a gunicorn webserver
@ -163,7 +168,7 @@ WORKDIR ${INVENTREE_HOME}
ENTRYPOINT ["/bin/ash", "./docker/init.sh"]
# Launch the development server
CMD ["invoke", "server", "-a", "${INVENTREE_WEB_ADDR}:${INVENTREE_WEB_PORT}"]
CMD ${INVENTREE_HOME}/execute.sh
# Image target for devcontainer
FROM dev as devcontainer

1
db_version Normal file
View File

@ -0,0 +1 @@
0.15

View File

@ -35,7 +35,7 @@ services:
# InvenTree web server service
# Runs the django built-in webserver application
inventree-dev-server:
inventree-dev:
depends_on:
- inventree-dev-db
build: &build_config
@ -53,16 +53,3 @@ services:
- docker.dev.env
restart: unless-stopped
# Background worker process handles long-running or periodic tasks
inventree-dev-worker:
image: inventree-dev-image
build: *build_config
command: invoke worker
depends_on:
- inventree-dev-server
volumes:
# Mount local source directory to /home/inventree
- ./:/home/inventree:z
env_file:
- docker.dev.env
restart: unless-stopped

58
execute.sh Executable file
View File

@ -0,0 +1,58 @@
#!/bin/sh
# File to check existence
db_version_old="${INVENTREE_HOME}/db_version.old"
db_version_new="${INVENTREE_HOME}/db_version"
# Check if the file exists
if [ ! -e "$db_version_old" ]; then
echo "New Installation DB is getting initialised"
# Run setup command
invoke update || exit 2
echo "Setup command completed."
cp "$db_version_new" "$db_version_old"
fi
old_version=$(cat "$db_version_old")
new_version=$(cat "$db_version_new")
echo "old version $old_version"
echo "new version $new_version"
# Number to compare (replace with your actual value)
# Check if the stored version is smaller than new one
if [ "$(awk -v num1=$new_version -v num2=$old_version 'BEGIN { print (num1 < num2) }')" -eq 1 ]; then
echo "Error: Downgrade of version is not allowed."
echo "Old DB version was $old_version, and the new version is $new_version"
exit 1
fi
if [ "$(awk -v num1=$old_version -v num2=$new_version 'BEGIN { print (num1 < num2) }')" -eq 1 ]; then
echo "DB upgrade available: Version was $old_version, new version is $new_version"
# Run update command
invoke update || exit 2
echo "Update successful"
# Copy the old version to the new version after update
cp "$db_version_new" "$db_version_old"
fi
# Run invoke server in the background
invoke server -a "${INVENTREE_WEB_ADDR}:${INVENTREE_WEB_PORT}" | sed "s/^/server: /" &
# Store the PID of the last background process (invoke server)
server_pid=$!
# Run invoke worker in the background
invoke worker | sed "s/^/worker: /" &
# Store the PID of the last background process (invoke worker)
worker_pid=$!
# Wait for both processes to finish
wait $server_pid
wait $worker_pid
echo "Both processes have completed."