blob: d6dccf96a12b7f2f70f883019f03cdb0976db0eb [file] [log] [blame]
{#
Copyright 2017-present Open Networking Foundation
Licensed 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.
#}
version: '2'
# XOS docker compose
# generated by cord-profile/templates/docker-compose.yml.j2
networks:
{% for network in xos_docker_networks %}
{{ network }}:
external: true
{% endfor %}
services:
{% if use_elasticstack %}
elk:
image: {{ pull_docker_registry }}sebp/elk:{{ pull_docker_tag }}
ports:
- "5601:5601"
- "9200:9200"
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
{% endif %}
xos_db:
image: {{ pull_docker_registry }}xosproject/xos-postgres:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
expose:
- "5432"
restart: unless-stopped
{% if use_redis %}
xos_redis:
image: {{ pull_docker_registry }}redis:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
restart: unless-stopped
{% endif %}
xos_gui:
image: {{ pull_docker_registry }}xosproject/xos-gui:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
ports:
- "4000:4000"
links:
- xos_ws:xos-ws
- xos_chameleon:xos-chameleon
depends_on:
- xos_ws
- xos_chameleon
volumes:
- {{ head_cord_profile_dir }}/style.config.js:/var/www/dist/style.config.js
- {{ head_cord_profile_dir }}/app.config.js:/var/www/dist/app.config.js
volumes_from:
- gui_extensions_store
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
restart: unless-stopped
xos_tosca:
image: {{ pull_docker_registry }}xosproject/xos-tosca:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
ports:
- "9102:9102"
links:
- xos_core:xos-core
volumes:
- {{ head_cord_profile_dir }}/xos-tosca.config.yaml:/opt/xos-tosca/src/xos-tosca.config.yaml
- {{ head_cord_profile_dir }}/im_cert_chain.pem:/usr/local/share/ca-certificates/local_certs.crt:ro
depends_on:
- xos_core
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
restart: unless-stopped
xos_chameleon:
image: {{ pull_docker_registry }}xosproject/chameleon:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
command: python chameleon/chameleon/main.py -R 9101 -G xos-core:50055 --swagger-url /apidocs -r
ports:
- "9101:9101"
links:
- xos_core:xos-core
depends_on:
- xos_core
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
restart: unless-stopped
gui_extensions_store:
image: {{ pull_docker_registry }}node:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
command: /bin/true
volumes:
- /var/www/dist/extensions
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
xos_ws:
image: {{ pull_docker_registry }}xosproject/xos-ws:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
command: npm start -- --config gateway-config.yml
ports:
- "3000:3000"
links:
- xos_core:xos
{% if use_redis %}
- xos_redis:redis
{% endif %}
depends_on:
- xos_core
{% if use_redis %}
- xos_redis
{% endif %}
volumes:
- {{ head_cord_profile_dir }}/gateway-config.yml:/var/www/src/config/gateway-config.yml
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
restart: unless-stopped
xos_core:
image: {{ pull_docker_registry }}xosproject/xos-ui:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
command: bash -c "service filebeat start; cd coreapi; bash ./start_coreapi.sh"
ports:
- "50051:50051"
- "50055:50055"
links:
- xos_db:xos-db
{% if use_redis %}
- xos_redis:redis
{% endif %}
depends_on:
- xos_db
{% if use_redis %}
- xos_redis
{% endif %}
volumes:
- {{ head_cord_profile_dir }}/xos_config.yaml:/opt/xos/xos_config.yaml:ro
- {{ head_cord_profile_dir }}:/opt/cord_profile:ro
- {{ head_cord_profile_dir }}/im_cert_chain.pem:/usr/local/share/ca-certificates/local_certs.crt:ro
- {{ head_cord_profile_dir }}/initial_data.yaml:/opt/xos/core/migrations/initial_data.yaml:ro
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
restart: unless-stopped
{% for ext in enabled_gui_extensions %}
gui-extension-{{ ext.name }}:
image: {{ pull_docker_registry }}xosproject/gui-extension-{{ ext.name }}:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
command: /bin/sh -c "mkdir -p /var/www/dist/extensions/{{ ext.name }}/ && cp -R /tmp/* /var/www/dist/extensions/{{ ext.name }}/"
volumes_from:
- gui_extensions_store
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
{% endfor %}
{% for svc in xos_services %}
{% if svc.synchronizer is not defined or svc.synchronizer %}
{{ svc.name }}-synchronizer:
image: {{ pull_docker_registry }}xosproject/{{ svc.name }}-synchronizer:{{ pull_docker_tag }}
networks:
{% for network in xos_docker_networks %}
- {{ network }}
{% endfor %}
{% if use_redis %}
depends_on:
- xos_redis
{% endif %}
links:
- xos_core:xos-core
{% if use_redis %}
- xos_redis:redis
{% endif %}
volumes:
- {{ head_cord_profile_dir }}/xos_config_synchronizer.yaml:/opt/xos/xos_config.yaml:ro
- {{ head_cord_profile_dir }}/node_key:/opt/cord_profile/node_key:ro
- {{ head_credentials_dir }}:/opt/xos/services/{{ svc.name }}/credentials:ro
- {{ head_cord_profile_dir }}/im_cert_chain.pem:/usr/local/share/ca-certificates/local_certs.crt:ro
{% if svc.keypair is defined %}
- {{ head_cord_profile_dir }}/key_import/{{ svc.keypair }}:/opt/xos/services/{{ svc.name }}/keys/{{ svc.keypair }}:ro
{% endif %}
{% if svc.name == "openstack" %}
- {{ head_cord_profile_dir }}/images:/opt/xos/images:ro
{% endif %}
logging:
driver: "json-file"
options:
max-size: "1000k"
max-file: "5"
restart: on-failure
{% endif %}
{% endfor %}