- Removed Dockerfile and added multiple Dockerfiles for various tools (ClickHouse, MongoDB, MinIO, Caddy, Redis) with Deno runtime. - Updated package.json to reflect new repository structure and versioning. - Added comprehensive README and technical notes for architecture overview and usage. - Implemented build and test scripts for streamlined image creation and validation. - Introduced bash scripts for NVM functionality in Docker images.
60 lines
1.8 KiB
Plaintext
60 lines
1.8 KiB
Plaintext
FROM alpine:edge
|
|
LABEL author="Task Venture Capital GmbH <hello@task.vc>"
|
|
|
|
WORKDIR /workspace
|
|
|
|
# Environment variables for NVM and Node.js
|
|
ENV NODE_VERSION_LTS="20.18.2" \
|
|
NVM_DIR="/usr/local/nvm" \
|
|
NVM_NODEJS_ORG_MIRROR="https://unofficial-builds.nodejs.org/download/release"
|
|
|
|
# Install required packages including Redis and Deno
|
|
RUN apk add --no-cache \
|
|
bash \
|
|
curl \
|
|
git \
|
|
ca-certificates \
|
|
unzip \
|
|
libstdc++ \
|
|
deno \
|
|
redis
|
|
|
|
# Create Redis data directory
|
|
RUN mkdir -p /data && chmod 777 /data
|
|
|
|
# Install NVM (latest version for better Alpine/musl support)
|
|
RUN mkdir -p $NVM_DIR && curl https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
|
|
|
|
# Make nvm available globally in all bash shells (interactive + non-interactive)
|
|
RUN printf '%s\n%s\n%s\n' \
|
|
'export NVM_DIR="/usr/local/nvm"' \
|
|
'[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' \
|
|
'[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"' \
|
|
> /etc/bash.bashrc
|
|
|
|
# Copy nvm wrapper scripts
|
|
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"]
|
|
|
|
# Enable nvm for runtime bash commands (CI/CD workflows)
|
|
ENV BASH_ENV=/etc/bash.bashrc
|
|
|
|
# Install Node.js LTS via NVM
|
|
RUN nvm install $NODE_VERSION_LTS \
|
|
&& nvm alias default $NODE_VERSION_LTS \
|
|
&& nvm use default
|
|
|
|
ENV PATH="$NVM_DIR/versions/node/v$NODE_VERSION_LTS/bin:$PATH"
|
|
ENV NODE_PATH=$NVM_DIR/v$NODE_VERSION_LTS/lib/node_modules
|
|
|
|
# Expose Redis port
|
|
EXPOSE 6379
|
|
|
|
# Set entrypoint to make nvm available in all runtime contexts
|
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
|
CMD ["redis-server"]
|