Create a minimal Docker image that runs the Tor daemon with your hidden service configuration:
# Dockerfile.tor
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y tor && \
rm -rf /var/lib/apt/lists/*
COPY torrc /etc/tor/torrc
RUN chown -R debian-tor:debian-tor /var/lib/tor
USER debian-tor
ENTRYPOINT ["tor", "-f", "/etc/tor/torrc"]The corresponding torrc file should point to volumes for the hidden service directory:
# torrc
SocksPort 0
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 web:80
HiddenServiceVersion 3
Log notice stdoutNote that HiddenServicePort points to web:80 - this is the Docker Compose service name for your web server container, resolved via Docker internal DNS.