Files
oneterm/docker-compose.yaml
2024-03-12 18:50:06 +08:00

159 lines
3.9 KiB
YAML

version: "3.0"
services:
oneterm-api:
image: registry.cn-hangzhou.aliyuncs.com/veops/oneterm-api:24.3
container_name: oneterm-api
volumes:
- file-data:/replay
- ./docs/api.yaml:/oneterm/config.yaml
depends_on:
- mysql
- redis
- oneterm-guacd
restart: always
networks:
new:
aliases:
- oneterm-api
oneterm-ssh:
image: registry.cn-hangzhou.aliyuncs.com/veops/oneterm-ssh:24.3
container_name: oneterm-ssh
ports:
- "12229:12228"
restart: always
tty: true
volumes:
- ./docs/ssh.yaml:/oneterm/config.yaml
- ./docs/scripts/entrypoint.sh:/oneterm/entrypoint.sh
- ssh-data:/root/.ssh
entrypoint: ./entrypoint.sh
depends_on:
- oneterm-api
networks:
new:
aliases:
- oneterm-ssh
oneterm-guacd:
image: registry.cn-hangzhou.aliyuncs.com/veops/oneterm-guacd:24.3
container_name: oneterm-guacd
user: root
restart: always
volumes:
- file-data:/replay
networks:
new:
aliases:
- oneterm-guacd
mysql:
image: registry.cn-hangzhou.aliyuncs.com/veops/mysql:latest
#image: mysql:8.0.30
container_name: oneterm-mysql
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_DATABASE: 'oneterm'
volumes:
- db-data:/var/lib/mysql
- ./docs/mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf
- ./docs/acl.sql:/docker-entrypoint-initdb.d/2-acl.sql
- ./docs/api.sql:/docker-entrypoint-initdb.d/3-api.sql
- ./docs/create-users.sql:/docker-entrypoint-initdb.d/1-create-users.sql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
restart: always
networks:
new:
aliases:
- mysql
ports:
- '23306:3306'
redis:
image: registry.cn-hangzhou.aliyuncs.com/veops/redis:latest
container_name: oneterm-redis
#command: redis-server --requirepass tyrj5QVP9rHs
restart: always
environment:
TZ: Asia/Shanghai
networks:
new:
aliases:
- redis
oneterm-ui:
image: registry.cn-hangzhou.aliyuncs.com/veops/oneterm-ui:24.3
container_name: oneterm-ui
depends_on:
- oneterm-api
environment:
TZ: Asia/Shanghai
ONETERM_API_HOST: oneterm-api:8080
ACL_API_HOST: acl-api:5000
NGINX_PORT: 80
volumes:
- ./docs/nginx.oneterm.conf.example:/etc/nginx/conf.d/nginx.oneterm.conf.example
restart: always
command:
- /bin/sh
- -c
- |
envsubst '$$ONETERM_API_HOST $$ACL_API_HOST $$NGINX_PORT' < /etc/nginx/conf.d/nginx.oneterm.conf.example > /etc/nginx/conf.d/oneterm.conf
nginx -g 'daemon off;'
networks:
- new
ports:
- "8000:80"
acl-api:
image: registry.cn-hangzhou.aliyuncs.com/veops/acl-api:1.1
container_name: oneterm-acl-api
environment:
#TZ: Asia/Shanghai
WAIT_HOSTS: mysql:3306, redis:6379
volumes:
- ./docs/settings.py:/data/app/acl/settings.py
- ./docs/.env:/data/apps/acl/.env
- ./docs/nginx.oneterm.conf.example:/etc/nginx/conf.d/nginx.oneterm.conf.example
restart: always
command:
- /bin/sh
- -c
- |
sleep 2
flask db-setup
flask init-acl
flask init-department
gunicorn --workers=3 autoapp:app -b 0.0.0.0:5000 -D --access-logfile logs/access.log --error-logfile logs/error.log
celery -A celery_worker.celery worker -E -Q acl_async --logfile=one_acl_async.log --autoscale=2,1
depends_on:
- mysql
- redis
networks:
new:
aliases:
- acl-api
volumes:
db-data:
driver: local
name: oneterm_db-data
file-data:
driver: local
name: oneterm_file-data
ssh-data:
driver: local
name: oneterm_ssh
networks:
new:
driver: bridge
name: oneterm_network
ipam:
config:
- subnet: 172.30.0.0/24