-
Notifications
You must be signed in to change notification settings - Fork 15
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
Individual docker scripts #1329
base: release_February_2025
Are you sure you want to change the base?
Conversation
Reviewer's Guide by SourceryThis PR introduces two new scripts, No diagrams generated as the changes look simple and do not need a visual representation. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @nedvedba - I've reviewed your changes - here's some feedback:
Overall Comments:
- Consider adding a shared function to avoid repeating the argument parsing logic in both scripts.
- It might be helpful to add some comments to the generated scripts to explain the purpose of each command.
Here's what I looked at during the review
- 🟡 General issues: 3 issues found
- 🟢 Security: all looks good
- 🟢 Testing: all looks good
- 🟢 Complexity: all looks good
- 🟢 Documentation: all looks good
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
IFS=',' read -ra local_REPO_VOLUME_MOUNTS <<< "$local_REPO_VOLUME_MOUNTS" | ||
local_REPO_VOLUME_MOUNTS_EXPANDED="" | ||
for volume_mount in "${local_REPO_VOLUME_MOUNTS[@]}"; do | ||
local_REPO_VOLUME_MOUNTS_EXPANDED+="-v \"$volume_mount\" " |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion (bug_risk): Review the method used for quoting volume mount strings.
Assembling the volume mount flags by embedding literal quotes might lead to issues if a mount value contains spaces or special characters. Consider accumulating these in an array and joining them carefully when generating the docker command.
Suggested implementation:
IFS=',' read -ra local_REPO_VOLUME_MOUNTS <<< "$local_REPO_VOLUME_MOUNTS"
local_REPO_VOLUME_MOUNTS_FLAGS=()
for volume_mount in "${local_REPO_VOLUME_MOUNTS[@]}"; do
local_REPO_VOLUME_MOUNTS_FLAGS+=( "-v" "$volume_mount" )
done
Any subsequent sections of the script that currently reference "local_REPO_VOLUME_MOUNTS_EXPANDED" should be updated to use the new array "local_REPO_VOLUME_MOUNTS_FLAGS". For example, when constructing the docker command, make sure to expand the array using "${local_REPO_VOLUME_MOUNTS_FLAGS[@]}".
-v "\$DATAFED_INSTALL_PATH/logs:/datafed/logs" \\ | ||
-v "\$DATAFED_INSTALL_PATH/keys/datafed-core-key.pub:/opt/datafed/keys/datafed-core-key.pub" \\ | ||
-v "\$DATAFED_INSTALL_PATH/keys/datafed-core-key.priv:/opt/datafed/keys/datafed-core-key.priv" \\ | ||
-t "datafed/core:$local_DOCKER_TAG" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion (bug_risk): Consider sanitizing the docker tag for container names.
The web container uses a sanitized variable while core, for example, uses the raw docker tag. If DATAFED_DOCKER_TAG contains unexpected characters, it might cause naming issues.
$local_REPO_VOLUME_MOUNTS_EXPANDED \\ | ||
-v "\$DATAFED_INSTALL_PATH/keys/datafed-repo-key.pub:/opt/datafed/keys/datafed-repo-key.pub" \\ | ||
-v "\$DATAFED_INSTALL_PATH/keys/datafed-repo-key.priv:/opt/datafed/keys/datafed-repo-key.priv" \\ | ||
-t "datafed/repo:$local_DOCKER_TAG" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion: Apply consistent sanitization to the docker tag for container naming.
Containers such as the repository container use the raw docker tag. Consistency in sanitizing the tag (as done for the web container) can help avoid potential issues with invalid container names.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Questions about configurability and duplicate code
PR Description
This PR serves to introduce two scripts that will create the individual container scripts needed to run the application in production.
Tasks
Summary by Sourcery
This pull request introduces scripts to generate individual Docker container scripts for metadata and repository services, and enhances the
generate_datafed.sh
script to support specifying the database port.New Features:
generate_metadata_container_scripts.sh
andgenerate_repo_container_scripts.sh
, to generate individual container scripts for running the application in production.generate_metadata_container_scripts.sh
creates scripts for managing ArangoDB, DataFed Core, DataFed Web, and Nginx containers, including creation, stopping, and removal.generate_repo_container_scripts.sh
creates scripts for managing DataFed Repo and GCS containers, including creation, stopping, and removal.Enhancements:
generate_datafed.sh
script now includes an option to specify the database port via theDATAFED_DATABASE_PORT
environment variable.