Files
odoocker/docker-compose.yml
2024-01-20 06:17:44 -06:00

260 lines
6.6 KiB
YAML

services:
odoo:
build:
context: ./
dockerfile: ./odoo/Dockerfile
args:
- ODOO_TAG
- ODOO_RC
- ROOT_PATH
- ENTERPRISE_USER
- ENTERPRISE_ACCESS_TOKEN
- ENTERPRISE_ADDONS
- GITHUB_USER
- GITHUB_ACCESS_TOKEN
- THIRD_PARTY_ADDONS
- LOG_PATH
- USE_REDIS
- USE_S3
- USE_SENTRY
tty: true
shm_size: 1gb
volumes:
- odoo-data:${DATA_DIR}
- ./odoo/extra-addons:${EXTRA_ADDONS}
- ./odoo/custom-addons:${CUSTOM_ADDONS}
- ./odoo/entrypoint.sh:/entrypoint.sh
environment:
- HOST=${DB_HOST}
- PORT=${DB_PORT}
- USER=${DB_USER}
- PASSWORD=${DB_PASSWORD}
- ODOO_TAG
- ODOO_RC
- USE_REDIS
- USE_S3
- USE_SENTRY
- THIRD_PARTY_ADDONS
- ODOO_SESSION_REDIS
- ODOO_SESSION_REDIS_HOST
- ODOO_SESSION_REDIS_PORT
- ODOO_SESSION_REDIS_PASSWORD
- ODOO_SESSION_REDIS_URL
- ODOO_SESSION_REDIS_PREFIX
- ODOO_SESSION_REDIS_SENTINEL_MASTER_NAME
- ODOO_SESSION_REDIS_SENTINEL_HOST
- ODOO_SESSION_REDIS_SENTINEL_PORT
- ODOO_SESSION_REDIS_EXPIRATION
- ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS
- AWS_HOST
- AWS_REGION
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_BUCKETNAME
networks:
- internal
profiles: [$ODOO_PROFILES]
postgres:
build:
context: ./
dockerfile: ./postgres/Dockerfile
args:
- POSTGRES_TAG
tty: true
shm_size: 1gb
volumes:
- pg-data:${PGDATA}
- ./postgres/entrypoint.sh:/docker-entrypoint-initdb.d/entrypoint.sh
environment:
- POSTGRES_DB
- POSTGRES_USER
- POSTGRES_PASSWORD
- PGDATA
- DB_USER
- DB_TEMPLATE
- UNACCENT_TEMPLATE
- PGADMING_DB_NAME
- PGADMING_DB_USER
- PGADMIN_DB_PASSWORD
networks:
- internal
profiles: [$POSTGRES_PROFILES]
nginx:
image: nginx:${NGINX_TAG}
depends_on:
- odoo
tty: true
expose:
- 80/tcp
shm_size: 1gb
volumes:
- ./nginx/nginx.conf:${NGINX_CONF}
- ./nginx/default.conf:${NGINX_DEFAULT_CONF}
environment:
- VIRTUAL_HOST
- LETSENCRYPT_HOST
- LETSENCRYPT_EMAIL
- CORS_ALLOWED_DOMAIN
networks:
- internal
profiles: [$NGINX_PROFILES]
nginx-proxy:
image: nginxproxy/nginx-proxy:${NGINX_PROXY_TAG}
depends_on:
- nginx
tty: true
shm_size: 1gb
volumes:
- ./nginx-proxy/nginx.conf:${NGINX_CONF}
- ./nginx-proxy/cors.conf:${NGINX_PROXY_CORS_CONF}
- html:${NGINX_HTML}
- vhost:${NGINX_VHOST}
- certs:${NGINX_CERTS}:ro
- ${DOCKER_SOCK}:${TEMP_DOCKER_SOCK}:ro
environment:
- TRUST_DOWNSTREAM_PROXY
- CORS_ALLOWED_DOMAIN
networks:
- internal
profiles: [$NGINX_PROXY_PROFILES]
traefik:
container_name: traefik
image: "traefik:${TRAEFIK_TAG}"
networks:
- internal
command:
- --api.dashboard=${API_DASHBOARD}
- --api.insecure=${API_INSECURE}
- --api.debug=${API_DEBUG}
- --entrypoints.web.address=${ENTRYPOINTS_WEB_ADDRESS}
- --providers.docker
- --log.level=${TRAEFIK_LOG_LEVEL}
- --accesslog.filepath=${ACCESSLOG_FILEPATH}
- --serversTransport.insecureSkipVerify=${INSERCURE_SKIP_VERIFY}
tty: true
shm_size: 1gb
volumes:
- ${DOCKER_SOCK}:${DOCKER_SOCK}:ro
- ./acme.json:${ACME_JSON}
- traefik_logs:${TRAEFIK_LOGS}
labels:
- traefik.enable=${TRAEFIK_ENABLE}
# Catch all HTTP trafic and redirect it to HTTPS
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
- traefik.http.routers.http-catchall.entrypoints=${HTTP_CATCHALL_ENTRYPOINTS}
# Traefik Dashboard route
- traefik.http.routers.traefik-dashboard.rule=Host(`${TRAEFIK_DASHBOARD_DOMAIN}`)
- traefik.http.routers.traefik-dashboard.service=${TRAEFIK_DASHBOARD_SERVICE}
profiles: [$TRAEFIK_PROFILES]
letsencrypt:
image: nginxproxy/acme-companion:${ACME_COMPANION_TAG}
depends_on:
- nginx-proxy
volumes_from:
- nginx-proxy:rw
volumes:
- certs:${NGINX_CERTS}:rw
- acme:${NGINX_ACME}
- ${DOCKER_SOCK}:${DOCKER_SOCK}:ro
environment:
- ACME_CA_URI
- CERTS_UPDATE_INTERVAL
- DEFAULT_EMAIL
networks:
- internal
profiles: [$ACME_COMPANION_PROFILES]
redis:
image: eqalpha/keydb:${KEYDB_TAG}
platform: linux/amd64
ports:
- ${KEYDB_PORT}:${KEYDB_PORT}
volumes:
- redis-data:${KEYDB_DATA}
networks:
- internal
profiles: [$KEYDB_PROFILES]
s3:
image: minio/minio:${MINIO_TAG}
environment:
- MINIO_ROOT_USER
- MINIO_ROOT_PASSWORD
- MINIO_BROWSER_REDIRECT_URL
- VIRTUAL_HOST=${MINIO_VIRTUAL_HOST}
- VIRTUAL_PORT=${MINIO_CONSOLE_PORT}
command: server ${MINIO_DATA} --console-address ":${MINIO_CONSOLE_PORT}"
shm_size: 1gb
volumes:
- s3-data:${MINIO_DATA}
ports:
- ${MINIO_API_PORT}:${MINIO_API_PORT}
- ${MINIO_CONSOLE_PORT}:${MINIO_CONSOLE_PORT}
networks:
- internal
profiles: [$MINIO_PROFILES]
pgadmin:
build:
context: ./
dockerfile: ./pgadmin/Dockerfile
args:
- PGADMIN_TAG
depends_on:
- nginx-proxy
expose:
- 80
shm_size: 1gb
volumes:
- pgadmin-data:${PGADMIN_DATA}
environment:
- PGADMIN_DEFAULT_EMAIL
- PGADMIN_DEFAULT_PASSWORD
- VIRTUAL_HOST=${PGADMIN_VIRTUAL_HOST}
- LETSENCRYPT_HOST=${PGADMIN_LETSENCRYPT_HOST}
- LETSENCRYPT_EMAIL=${PGADMIN_LETSENCRYPT_EMAIL}
- PGADMIN_CONFIG_APP_NAME
- PGADMIN_CONFIG_CONFIG_DATABASE_CONNECTION_POOL_SIZE
- PGADMIN_CONFIG_SERVER_MODE
- PGADMIN_CONFIG_DEFAULT_SERVER
- PGADMIN_CONFIG_DEFAULT_SERVER_PORT
- PGADMIN_CONFIG_PASSWORD_LENGTH_MIN
- PGADMIN_CONFIG_MAX_SESSION_IDLE_TIME
- PGADMIN_CONFIG_CONFIG_DATABASE_URI
- PGADMIN_CONFIG_ALLOW_SAVE_PASSWORD
- PGADMIN_CONFIG_MAX_QUERY_HIST_STORED
- PGADMIN_CONFIG_MAIL_SERVER
- PGADMIN_CONFIG_MAIL_PORT
- PGADMIN_CONFIG_MAIL_USE_SSL
- PGADMIN_CONFIG_MAIL_USE_TLS
- PGADMIN_CONFIG_MAIL_USERNAME
- PGADMIN_CONFIG_MAIL_PASSWORD
- PGADMIN_CONFIG_MAIL_DEBUG
- PGADMIN_CONFIG_SECURITY_EMAIL_SENDER
- PGADMIN_CONFIG_ALLOW_SAVE_TUNNEL_PASSWORD
- PGADMIN_CONFIG_MAX_LOGIN_ATTEMPTS
networks:
- internal
profiles: [$PGADMIN_PROFILES]
volumes:
odoo-data:
pg-data:
redis-data:
s3-data:
pgadmin-data:
html:
vhost:
certs:
acme:
traefik_logs:
networks:
internal:
driver: bridge