先创建一个文件夹jumpserver,然后上传 .env和 docker-compose.yml文件,文件内容如下:
# .env
#自行生成填写
PG_PASS=XXXX
JUMPSERVER_REDIS_ROOT_PASS=XXXXX
#自行生成填写
BOOTSTRAP_TOKEN=KOwVIbAkhx5D8XUx
JUMPSERVER_SECRET_KEY=XXXXXXXX
JUMPSERVER_ERROR_REPORTING__ENABLED=true
LOG_LEVEL=INFO
DEBUG=FALSE
version: '3.8'
services:
postgresql:
env_file:
- .env
environment:
POSTGRES_DB: ${PG_DB:-jumpserver}
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
POSTGRES_USER: ${PG_USER:-jumpserver}
healthcheck:
interval: 30s
retries: 5
start_period: 20s
test:
- CMD-SHELL
- pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}
timeout: 5s
image: docker.io/library/postgres:16-alpine
networks:
- jumpserver-network
restart: unless-stopped
volumes:
- ./database:/var/lib/postgresql/data
redis:
env_file:
- .env
image: redis:7-alpine
restart: unless-stopped
networks:
- jumpserver-network
depends_on:
postgresql:
condition: service_started
command: ["redis-server", "--appendonly", "yes"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 5s
retries: 5
volumes:
- ./data:/data
jumpserver:
command: server
depends_on:
postgresql:
condition: service_healthy
redis:
condition: service_started
env_file:
- .env
environment:
JUMPSERVER_POSTGRESQL__HOST: postgresql
JUMPSERVER_POSTGRESQL__NAME: ${PG_DB:-jumpserver}
JUMPSERVER_POSTGRESQL__PASSWORD: ${PG_PASS}
JUMPSERVER_POSTGRESQL__USER: ${PG_USER:-jumpserver}
JUMPSERVER_SECRET_KEY: ${JUMPSERVER_SECRET_KEY:?secret key required}
BOOTSTRAP_TOKEN: ${BOOTSTRAP_TOKEN}
DEBUG: ${DEBUG}
LOG_LEVEL: ${LOG_LEVEL}
JUMPSERVER_REDIS_HOST: ${JUMPSERVER_REDIS_HOST:-redis}
JUMPSERVER_REDIS_PORT: 6379
JUMPSERVER_REDIS_PASSWORD: ${JUMPSERVER_REDIS_ROOT_PASS}
JUMPSERVER_DOMAINS: ${JUMPSERVER_DOMAINS:-}
image: jumpserver/jms_all:v4.10.12
container_name: jumpserver
restart: unless-stopped
networks:
- jumpserver-network
ports:
- ${COMPOSE_PORT_HTTP:-18080}:80
- ${COMPOSE_PORT_HTTP:-12222}:2222
volumes:
- ./data/:/opt/data
volumes:
database:
driver: local
networks:
jumpserver-network:
driver: bridge