Skip to content

AKShare Docker Deployment

This documentation is an English translation of the original AKShare documentation.

Back to original Chinese documentation →


Docker Deployment

This guide covers deploying AKShare using Docker containers.


Prerequisites

  • Docker installed
  • Docker Compose (optional)
  • 4GB RAM minimum
  • 10GB disk space

Installation

1. Install Docker

Ubuntu:

sudo apt-get update
sudo apt-get install docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker

macOS:

brew install --cask docker

Windows: Download from https://www.docker.com/products/docker-desktop

2. Verify Installation

docker --version
docker-compose --version

Quick Start

Pull Official Image

docker pull akshare/akshare:latest

Run Container

docker run -it --rm akshare/akshare:latest python

Run with Volume

docker run -it --rm \
  -v $(pwd)/data:/app/data \
  akshare/akshare:latest \
  python script.py

Custom Dockerfile

Create Dockerfile

FROM akshare/akshare:latest

WORKDIR /app

# Copy requirements
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copy application code
COPY . .

# Install additional packages
RUN pip install jupyterlab

EXPOSE 8888

CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888"]

Build Image

docker build -t my-akshare-app .

Run Custom Container

docker run -it --rm \
  -p 8888:8888 \
  -v $(pwd):/app \
  my-akshare-app

Docker Compose

docker-compose.yml

version: '3.8'

services:
  akshare:
    image: akshare/akshare:latest
    volumes:
      - ./data:/app/data
      - ./notebooks:/app/notebooks
    ports:
      - "8888:8888"
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped

  # Optional: AKTools HTTP API
  aktools:
    image: akfamily/aktools:latest
    ports:
      - "8000:8000"
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped

Start Services

docker-compose up -d

# View logs
docker-compose logs -f

# Stop services
docker-compose down

Production Deployment

1. Build Production Image

FROM python:3.11-slim as builder

WORKDIR /build
COPY requirements.txt .
RUN pip wheel --wheel-dir=/build/wheels -r requirements.txt

FROM python:3.11-slim

WORKDIR /app
COPY --from=builder /build/wheels /wheels
RUN pip install --no-cache-dir /wheels/*.whl

COPY . .

EXPOSE 8000
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "app:main"]

2. Deploy with Systemd

[Unit]
Description=AKShare Service
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/akshare
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down

[Install]
WantedBy=multi-user.target

Monitoring

Health Check

# Check container health
docker inspect --format='{{.State.Health.Status}}' container_name

View Metrics

# Container stats
docker stats

# Disk usage
docker system df

Troubleshooting

Container Won't Start

# Check logs
docker-compose logs

# Check resources
docker system df

Out of Memory

# Increase memory limit
docker run -m 4g ...

Network Issues

# Check network
docker network ls
docker network inspect bridge

Security Best Practices

  1. Use specific tags: akshare/akshare:1.18.22 instead of latest
  2. Run as non-root: Create user in Dockerfile
  3. Scan images: Use trivy or snyk
  4. Update regularly: docker-compose pull && docker-compose up -d

**AKShare** | *Open Data. Open Minds.* [GitHub](https://github.com/akfamily/akshare) • [Documentation](https://akshare.akfamily.xyz)