refactor(nvm): Move wrapper scripts to image_support_files directory
Improved code organization and maintainability: - Created image_support_files/ directory for Docker helper scripts - Moved bash-with-nvm and docker-entrypoint.sh to support directory - Added comprehensive README.md documenting each script's purpose - Updated Dockerfile to COPY from organized directory structure Benefits: - Cleaner repository structure - Scripts are now version-controlled files (not echo chains) - Easier to read, modify, and maintain - Self-documented with in-directory README No functional changes - all nvm functionality remains identical.
This commit is contained in:
25
Dockerfile
25
Dockerfile
@@ -93,31 +93,14 @@ RUN printf '%s\n%s\n%s\n\n%s\n' \
|
||||
'[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"' \
|
||||
"$(cat /etc/bash.bashrc)" > /etc/bash.bashrc
|
||||
|
||||
# Create a shell wrapper that sources nvm before executing commands
|
||||
RUN echo '#!/bin/bash' > /usr/local/bin/bash-with-nvm \
|
||||
&& echo 'set -e' >> /usr/local/bin/bash-with-nvm \
|
||||
&& echo 'export NVM_DIR="/usr/local/nvm"' >> /usr/local/bin/bash-with-nvm \
|
||||
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /usr/local/bin/bash-with-nvm \
|
||||
&& echo 'eval "$@"' >> /usr/local/bin/bash-with-nvm \
|
||||
&& chmod +x /usr/local/bin/bash-with-nvm
|
||||
# Copy nvm wrapper scripts from support directory
|
||||
COPY image_support_files/bash-with-nvm /usr/local/bin/bash-with-nvm
|
||||
COPY image_support_files/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||
RUN chmod +x /usr/local/bin/bash-with-nvm /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
# Use wrapper for RUN commands to enable nvm
|
||||
SHELL ["/usr/local/bin/bash-with-nvm"]
|
||||
|
||||
# Create entrypoint wrapper for runtime nvm support (CI/CD workflows)
|
||||
RUN echo '#!/bin/bash' > /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo 'set -e' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo 'export NVM_DIR="/usr/local/nvm"' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo '# If command is bash, source nvm in it' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo 'if [ "$1" = "bash" ] && [ "$2" = "-c" ]; then' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo ' shift 2' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo ' exec bash -c "source /etc/bash.bashrc && $*"' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo 'else' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo ' exec "$@"' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& echo 'fi' >> /usr/local/bin/docker-entrypoint.sh \
|
||||
&& chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
# Enable nvm for runtime bash commands (CI/CD workflows)
|
||||
ENV BASH_ENV=/etc/bash.bashrc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user