blob: ccb289a179cd71db2a02c772962c69bc44ffbd21 [file]
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
services:
# etcd service
etcd:
image: quay.io/coreos/etcd:v3.6.1
container_name: pixiu_admin_etcd
environment:
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://pixiu_admin_etcd:2379
- ETCD_DATA_DIR=/etcd-data
- ETCD_NAME=etcd-node-1
- ALLOW_NONE_AUTHENTICATION=yes
volumes:
- ./etcd-data:/etcd-data
ports:
- "2379:2379"
- "2380:2380"
networks:
- app_network
# OPA service
opa:
image: openpolicyagent/opa:1.13.1
container_name: pixiu_admin_opa
ports:
- "8181:8181"
networks:
- app_network
command:
- "run"
- "--server"
- "--addr=:8181"
- "--log-level=info"
mysql_pixiu:
image: mysql:8
container_name: pixiu_admin_mysql
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: pixiu
MYSQL_USER: pixiu_user
MYSQL_PASSWORD: pixiu_password
ports:
- "3306:3306"
volumes:
- ./admin/resources/sql:/docker-entrypoint-initdb.d
networks:
- app_network
# pixiu service
pixiu:
build:
context: .
dockerfile: Dockerfile
container_name: pixiu_admin_pixiu_gateway
ports:
- "8888:8888"
volumes:
- ./configs/pixiu_with_admin_config.yaml:/etc/pixiu/conf.yaml # Mount the custom config file
- ./configs/log.yml:/etc/pixiu/log.yml # Mount log configuration if needed
networks:
- app_network
depends_on:
- etcd # Ensure etcd is ready before starting the backend
- opa # Ensure opa is ready before starting the backend
- backend # backend is the xds server for pixiu
entrypoint: ["/bin/sh", "-c", "echo 'Waiting for backend to be ready on port 8081...' && \
until nc -z pixiu_admin_go_backend 8081; do \
sleep 3; \
done && \
echo 'Backend is ready!' && \
/app/docker-entrypoint.sh"]
# backend service(GO)
backend:
image: golang:1.25
container_name: pixiu_admin_go_backend
working_dir: /app
volumes:
- .:/app
ports:
- "8081:8081"
command: >
sh -c "
curl -sS http://pixiu_admin_etcd:2379/health || exit 1 &&
go mod tidy &&
go run ./cmd/admin/admin.go -c ./configs/admin_docker_config.yaml
"
environment:
- GO111MODULE=on
- GOPROXY=https://goproxy.cn,direct
networks:
- app_network
depends_on:
- etcd # Ensure etcd is ready before starting the backend
# frontend(Web)
frontend:
image: node:18.20.8
container_name: pixiu_admin_frontend
working_dir: /app/web
volumes:
- ./admin/web:/app/web
ports:
- "8080:8080"
environment:
- VUE_APP_BACKEND_URL=http://pixiu_admin_go_backend:8081
command: >
sh -c "
yarn install &&
yarn run serve --host 0.0.0.0
"
networks:
- app_network
networks:
app_network:
driver: bridge