Files
bun.sh/test/js/valkey/docker-tls/Dockerfile

59 lines
2.4 KiB
Docker

# Dockerfile for Valkey/Redis with TLS support
FROM redis:7-alpine
# Install bash for initialization scripts
RUN apk add --no-cache bash
# Create certificates directory
RUN mkdir -p /etc/redis/certs
# Copy certificates
COPY server.key /etc/redis/certs/
COPY server.crt /etc/redis/certs/
# Create initialization script
RUN echo '#!/bin/bash\n\
set -e\n\
\n\
# Wait for Redis to start\n\
until redis-cli --tls --cert /etc/redis/certs/server.crt --key /etc/redis/certs/server.key --cacert /etc/redis/certs/server.crt ping; do\n\
echo "Waiting for Redis TLS to start..."\n\
sleep 1\n\
done\n\
\n\
echo "Redis TLS is ready!"\n\
\n\
# Set up some test data for persistence tests\n\
redis-cli --tls --cert /etc/redis/certs/server.crt --key /etc/redis/certs/server.key --cacert /etc/redis/certs/server.crt set bun_valkey_tls_test_init "initialization_successful"\n\
\n\
# Create test hash\n\
redis-cli --tls --cert /etc/redis/certs/server.crt --key /etc/redis/certs/server.key --cacert /etc/redis/certs/server.crt hset bun_valkey_tls_test_hash name "test_user" age "25" active "true"\n\
\n\
# Create test set\n\
redis-cli --tls --cert /etc/redis/certs/server.crt --key /etc/redis/certs/server.key --cacert /etc/redis/certs/server.crt sadd bun_valkey_tls_test_set "red" "green" "blue"\n\
\n\
# Create test list\n\
redis-cli --tls --cert /etc/redis/certs/server.crt --key /etc/redis/certs/server.key --cacert /etc/redis/certs/server.crt lpush bun_valkey_tls_test_list "first" "second" "third"\n\
' > /docker-entrypoint-initdb.d/init-redis.sh
# Make the script executable
RUN chmod +x /docker-entrypoint-initdb.d/init-redis.sh
# Configure Redis
RUN echo "bind 0.0.0.0" > /etc/redis/redis.conf && \
echo "protected-mode no" >> /etc/redis/redis.conf && \
echo "appendonly yes" >> /etc/redis/redis.conf && \
echo "tls-port 6380" >> /etc/redis/redis.conf && \
echo "port 0" >> /etc/redis/redis.conf && \
echo "tls-cert-file /etc/redis/certs/server.crt" >> /etc/redis/redis.conf && \
echo "tls-key-file /etc/redis/certs/server.key" >> /etc/redis/redis.conf && \
echo "tls-ca-cert-file /etc/redis/certs/server.crt" >> /etc/redis/redis.conf && \
echo "unixsocket /tmp/redis.sock" >> /etc/redis/redis.conf && \
echo "unixsocketperm 777" >> /etc/redis/redis.conf
# Expose TLS port and create volume for Unix socket
EXPOSE 6380
VOLUME /tmp
# Use custom entrypoint to run initialization script
CMD ["redis-server", "/etc/redis/redis.conf"]