diff --git a/Dockerfile.miner b/Dockerfile.miner index 6650def8c..d47f875de 100644 --- a/Dockerfile.miner +++ b/Dockerfile.miner @@ -6,14 +6,13 @@ FROM python:3.11-slim LABEL maintainer="RustChain Community" LABEL description="RustChain Proof-of-Antiquity Miner" -LABEL version="1.0.0" +LABEL version="1.1.0" # Build argument for miner type ARG MINER_TYPE=linux ARG MINER_ARCH=x86_64 # Environment variables -# ENV WALLET_NAME and NODE_URL are read at runtime by docker-miner-entrypoint.sh ENV PYTHONUNBUFFERED=1 \ WALLET_NAME="" \ NODE_URL="https://rustchain.org" \ @@ -39,8 +38,9 @@ RUN pip install --no-cache-dir -r requirements.txt COPY miners/ ./miners/ COPY wallet/ ./wallet/ -# Copy color logs helper -COPY miners/color_logs.py ./ +# Copy entrypoint script (must happen before USER switch) +COPY docker-miner-entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh # Create a non-root user (security best practice) RUN useradd -m -u 1000 rustchain && \ @@ -48,13 +48,9 @@ RUN useradd -m -u 1000 rustchain && \ USER rustchain -# Health check +# Health check - verify the node is reachable HEALTHCHECK --interval=5m --timeout=30s --start-period=1m --retries=3 \ - CMD curl -f ${NODE_URL}/health || exit 1 - -# Entry point script -COPY docker-miner-entrypoint.sh /entrypoint.sh -RUN chmod +x /entrypoint.sh + CMD curl -fsk ${NODE_URL}/health || exit 1 ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker-compose.miner.yml b/docker-compose.miner.yml index e5def6854..2355d8a21 100644 --- a/docker-compose.miner.yml +++ b/docker-compose.miner.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: rustchain-miner: build: @@ -10,21 +8,20 @@ services: - MINER_ARCH=x86_64 container_name: rustchain-miner restart: unless-stopped - - # Environment variables (configure these via .env.miner) - env_file: - - .env.miner + + # Environment variables + # Set WALLET_NAME via shell env or .env file in the same directory environment: - - WALLET_NAME=${WALLET_NAME} + - WALLET_NAME=${WALLET_NAME:?Set WALLET_NAME to your RTC wallet address} - NODE_URL=${NODE_URL:-https://rustchain.org} - BLOCK_TIME=${BLOCK_TIME:-600} - PYTHONUNBUFFERED=1 - + # Volume for persistent data volumes: - miner-data:/app/data - - # Resource limits (optional) + + # Resource limits deploy: resources: limits: @@ -33,35 +30,30 @@ services: reservations: cpus: '0.5' memory: 128M - + # Logging configuration logging: driver: "json-file" options: max-size: "10m" max-file: "3" - - # Network mode - network_mode: "bridge" volumes: miner-data: driver: local # Usage: -# 1. Set your wallet name: -# export WALLET_NAME=RTC27a4b8256b4d3c63737b27e96b181223cc8774ae +# 1. Set your wallet name: +# export WALLET_NAME=RTC27a4b8256b4d3c63737b27e96b181223cc8774ae # -# 2. Run the miner: -# docker-compose up -d +# 2. Run the miner: +# docker compose -f docker-compose.miner.yml up -d # -# 3. View logs: -# docker-compose logs -f rustchain-miner +# 3. View logs: +# docker compose -f docker-compose.miner.yml logs -f # -# 4. Stop the miner: -# docker-compose down +# 4. Stop the miner: +# docker compose -f docker-compose.miner.yml down # # Note: Docker miners receive reduced rewards due to anti-VM detection. # For maximum rewards, run the miner directly on physical hardware. -# 0. Create .env.miner (from template) and set WALLET_NAME -# cp .env.miner.example .env.miner diff --git a/docker-miner-entrypoint.sh b/docker-miner-entrypoint.sh index cbe994e8a..4fbe147ea 100755 --- a/docker-miner-entrypoint.sh +++ b/docker-miner-entrypoint.sh @@ -56,4 +56,6 @@ echo "" echo "[START] Launching miner: $MINER_SCRIPT" echo "" -exec python3 -u "$MINER_SCRIPT" --wallet "$WALLET_NAME" --node "$NODE_URL" \ No newline at end of file +# NODE_URL is already exported as an environment variable for the miner. +# The miner CLI accepts --wallet but reads NODE_URL from the environment. +exec python3 -u "$MINER_SCRIPT" --wallet "$WALLET_NAME" \ No newline at end of file