From 0e01523261ad085ee4b1cfc310eea4011dda155e Mon Sep 17 00:00:00 2001 From: SnO2WMaN Date: Sat, 1 May 2021 09:29:39 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=E6=AD=B4=E5=8F=B2=E7=9A=84=E3=81=AA?= =?UTF-8?q?=E3=82=84=E3=81=A4=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 395 +++++++++++---------------------------------- 1 file changed, 97 insertions(+), 298 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a07ae65..9112d8f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ version: "3.7" services: + # imageproxy imageproxy: restart: always image: willnorris/imageproxy@sha256:7e4c77d1b64db9152591dbfd8565d5d377eb8a243040efa4e241b97ba94feb1d @@ -28,256 +29,12 @@ services: volumes: - imageproxy-redis-data:/data - api-gateway: - restart: always - image: ghcr.io/bo2kshelf/api-gateway:develop@sha256:bb5c602f8c0e2689fe807f50ec072c256d6b1942d5b5b2f9d23a073719c8a9b1 - networks: - - api - ports: - - published: ${API_GATEWAY_PORT} - target: 4000 - depends_on: - bookcover-api: - condition: service_started - neo4j-api: - condition: service_started - users-api: - condition: service_started - search-api: - condition: service_started - environment: - PORT: 4000 - BOOKS_API_URL: http://neo4j-api:4000/graphql - BOOKCOVER_API_URL: http://bookcover-api:4000/graphql - SEARCH_API_URL: http://search-api:4000/graphql - USERS_API_URL: http://users-api:4000/graphql - JWT_SECRET: $API_GATEWAY_JWT_SECRET - USER_API_ENDPOINT: http://users-api:4000 - - bookcover-api: - restart: always - image: ghcr.io/bo2kshelf/bookcover-api:develop@sha256:8e4bfab9924f631a92490fd2c3d9722ee255bc217771311674a081de73d69550 - networks: - - api - - bookcover-api - - imageproxy - ports: - - published: ${BOOKCOVER_API_PORT} - target: 4000 - depends_on: - bookcover-api-redis: - condition: service_healthy - environment: - PORT: 4000 - RAKUTEN_APPLICATION_ID: $RAKUTEN_APPLICATION_ID - RAKUTEN_APPLICATION_SECRET: $RAKUTEN_APPLICATION_SECRET - IMAGEPROXY_BASE_URL: $IMAGEPROXY_BASE_URL - REDIS_HOST: bookcover-api-redis - REDIS_PORT: 6379 - - bookcover-api-redis: - restart: always - image: redis:6@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 - healthcheck: *redis-healthcheck - networks: - - bookcover-api - volumes: - - bookcover-api-redis-data:/data - - neo4j-api: - restart: always - image: ghcr.io/bo2kshelf/neo4j-api:develop@sha256:95308053eb00d917233e2cdc4d1e63b9771f865ea4d5c86889e08e23292b2813 - depends_on: - neo4j-api-neo4j: - condition: service_healthy - networks: - - api - - neo4j-api - ports: - - published: ${NEO4J_API_PORT} - target: 4000 - environment: - PORT: 4000 - NEO4J_URL: bolt://neo4j-api-neo4j:7687 - NEO4J_USERNAME: ${NEO4J_API_NEO4J_USERNAME} - NEO4J_PASSWORD: ${NEO4J_API_NEO4J_PASSWORD} - - neo4j-api-neo4j: - restart: always - image: neo4j:4.2@sha256:699af10b322f66d45e42b19dfbab752e09801169165a756c60254bf66c5d2c15 - networks: - - neo4j-api - - readonly-neo4j - - writable-neo4j - ports: - - published: $NEO4J_API_NEO4J_HTTP_PORT - target: 7474 - - published: $NEO4J_API_NEO4J_BOLT_PORT - target: 7687 - healthcheck: &neo4j-healthcheck - test: wget http://localhost:7474/browser -O- - interval: 5s - timeout: 3s - retries: 30 - environment: - NEO4J_AUTH: ${NEO4J_API_NEO4J_USERNAME}/${NEO4J_API_NEO4J_PASSWORD} - NEO4JLABS_PLUGINS: '["apoc"]' - NEO4J_apoc_export_file_enabled: "true" - NEO4J_apoc_import_file_enabled: "true" - NEO4J_apoc_import_file_use__neo4j__config: "true" - volumes: - - neo4j-api-neo4j-data:/data - - neo4j-api-neo4j-logs:/logs - - neo4j-api-neo4j-import:/var/lib/neo4j/import - - neo4j-api-neo4j-plugins:/plugins - - users-api: - restart: always - image: ghcr.io/bo2kshelf/users-api:develop@sha256:c83befc51f1dd24dfbd4749da70b6eb5c10c676926639401169526f63b0c6b26 - depends_on: - users-api-mysql: - condition: service_healthy - networks: - - api - - users-api - - imageproxy - ports: - - published: ${USERS_API_PORT} - target: 4000 - environment: - PORT: 4000 - IMAGEPROXY_BASE_URL: $IMAGEPROXY_BASE_URL - JWT_SECRET: $USERS_API_JWT_SECRET - PRISMA_DATABASE_URL: mysql://root:${USERS_API_MYSQL_ROOT_PASSWORD}@users-api-mysql:3306/${USERS_API_MYSQL_DATABASE} - - users-api-mysql: - restart: always - image: mysql:8.0@sha256:04ee7141256e83797ea4a84a4d31b1f1bc10111c8d1bc1879d52729ccd19e20a - networks: - - users-api - - readonly-users-db - - writable-users-db - ports: - - published: $USERS_API_MYSQL_PORT - target: 3306 - environment: - MYSQL_ROOT_PASSWORD: $USERS_API_MYSQL_ROOT_PASSWORD - MYSQL_DATABASE: $USERS_API_MYSQL_DATABASE - volumes: - - users-api-mysql-data:/var/lib/mysql - healthcheck: &mysql-healthcheck - test: "mysqladmin ping -h localhost" - interval: 10s - timeout: 20s - retries: 10 - - search-api: - restart: always - image: ghcr.io/bo2kshelf/search-api:develop@sha256:340697cf79efb99c971bb438ae1bfcc79f6e3f120c780a7e4fcb016095a401b5 - depends_on: - search-api-elasticsearch: - condition: service_healthy - networks: - - api - - search-api - ports: - - published: ${SEARCH_API_PORT} - target: 4000 - environment: - ELASTICSEARCH_NODE_URI: http://search-api-elasticsearch:9200 - ELASTICSEARCH_BOOKS_INDEX: books - ELASTICSEARCH_AUTHORS_INDEX: authors - ELASTICSEARCH_SERIES_INDEX: series - - search-api-elasticsearch: - restart: always - image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2@sha256:2c257b68f361872e13bdd476cba152e232a314ec61b0eedfc1f71b628ba39432 - networks: - - search-api - environment: - discovery.type: single-node - ES_JAVA_OPTS: -Xms512m -Xmx512m - ulimits: - memlock: - soft: -1 - hard: -1 - volumes: - - search-api-elasticsearch:/usr/share/elasticsearch/data - healthcheck: &elasicsearch-healthcheck - test: "curl --fail http://localhost:9200 || exit 1" - interval: 2s - timeout: 60s - retries: 300 - - auth-server: - restart: always - image: ghcr.io/bo2kshelf/auth-server:develop@sha256:f1406eefecab1ddc917f0e31ad8e109fbd61de31102bfea5839771f73b0bb3d1 - depends_on: - auth-server-mongo: - condition: service_healthy - auth-server-postgresql: - condition: service_healthy - environment: - PORT: 4000 - SESSION_NAME: ${AUTH_SERVER_SESSION_NAME} - USER_API_ENDPOINT: http://users-api:4000 - JWT_SECRET: ${AUTH_SERVER_JWT_SECRET} - SESSION_SECRET: ${AUTH_SERVER_SESSION_SECRET} - SESSION_MONGO_URI: mongodb://${AUTH_SERVER_MONGO_USERNAME}:${AUTH_SERVER_MONGO_PASSWORD}@auth-server-mongo:27017/${AUTH_SERVER_MONGO_DATABASE}?authSource=admin - PRISMA_DATABASE_URL: postgresql://${AUTH_SERVER_POSTGRES_USERNAME}:${AUTH_SERVER_POSTGRES_PASSWORD}@auth-server-postgresql:5432/${AUTH_SERVER_POSTGRES_DATABASE} - ports: - - published: ${AUTH_SERVER_PORT} - target: 4000 - networks: - - auth-server - - users-api - - auth-server-mongo: - restart: always - image: mongo:4.4@sha256:64be89e169fc33f3fa140c2c548186be4acd972bd7174344505fc5630dcf707c - healthcheck: &mongo-healthcheck - test: test $$(echo "db.runCommand('ping').ok" | mongo --quiet) -eq 1 - interval: 2s - start_period: 30s - ports: - - published: $AUTH_SERVER_MONGO_PORT - target: 27017 - environment: - MONGO_INITDB_ROOT_USERNAME: ${AUTH_SERVER_MONGO_USERNAME} - MONGO_INITDB_ROOT_PASSWORD: ${AUTH_SERVER_MONGO_PASSWORD} - MONGO_INITDB_DATABASE: ${AUTH_SERVER_MONGO_DATABASE} - networks: - - auth-server - volumes: - - auth-server-mongo-data:/data/db - - auth-server-postgresql: - restart: always - image: postgres:13.2@sha256:61d5d8ef6cb4e2035f053f26b6b455c201a809354084cc8426b6904b8dd35602 - healthcheck: &postgresql-healthcheck - test: ["CMD", "pg_isready"] - interval: 1s - timeout: 3s - retries: 30 - networks: - - auth-server - ports: - - published: $AUTH_SERVER_POSTGRES_PORT - target: 5432 - environment: - POSTGRES_USER: ${AUTH_SERVER_POSTGRES_USERNAME} - POSTGRES_PASSWORD: ${AUTH_SERVER_POSTGRES_PASSWORD} - POSTGRES_DB: ${AUTH_SERVER_POSTGRES_DATABASE} - volumes: - - auth-server-postgresql-data:/var/lib/postgresql/data - # for development tools adminer: restart: always image: adminer:standalone@sha256:370c04eb26f585c408986d89d1d9c5e62f387d4afdd5a49aa13f7c5f53790262 networks: - - auth-server - - users-api + - papi-users-mysql ports: - published: $ADMINER_PORT target: 8080 @@ -316,46 +73,84 @@ services: restart: always image: ghcr.io/bo2kshelf/read-users-service:develop@sha256:04ce0b1215636e1a05b4f47f742f02605c752c2f43ef5d709add3f0b2b6f167b depends_on: - users-api-mysql: + papi-users-mysql: condition: service_healthy networks: - imageproxy - - readonly-users-db - papi-read-users environment: PORT: 4000 - PRISMA_DATABASE_URL: mysql://root:${USERS_API_MYSQL_ROOT_PASSWORD}@users-api-mysql:3306/${USERS_API_MYSQL_DATABASE} + PRISMA_DATABASE_URL: mysql://root:${PAPI_USERS_MYSQL_ROOT_PASSWORD}@papi-users-mysql:3306/${PAPI_USERS_MYSQL_DATABASE} IMAGEPROXY_BASE_URL: $IMAGEPROXY_BASE_URL + papi-users-mysql: + restart: always + image: mysql:8.0@sha256:04ee7141256e83797ea4a84a4d31b1f1bc10111c8d1bc1879d52729ccd19e20a + networks: + - papi-users-mysql + - papi-read-users + environment: + MYSQL_ROOT_PASSWORD: ${PAPI_USERS_MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${PAPI_USERS_MYSQL_DATABASE} + volumes: + - papi-read-users-mysql-data:/var/lib/mysql + healthcheck: &mysql-healthcheck + test: "mysqladmin ping -h localhost" + interval: 10s + timeout: 20s + retries: 10 + papi-read-contents-service: restart: always image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:97a0a55e3b970dcd32da69f2ed8c8d3238dfc429bdf33a84f862ed7a995e28a5 depends_on: - neo4j-api-neo4j: + papi-neo4j: condition: service_healthy networks: - - readonly-neo4j + - papi-neo4j - papi-read-contents environment: PORT: 4000 - NEO4J_URL: bolt://neo4j-api-neo4j:7687 - NEO4J_USERNAME: ${NEO4J_API_NEO4J_USERNAME} - NEO4J_PASSWORD: ${NEO4J_API_NEO4J_PASSWORD} + NEO4J_URL: bolt://papi-neo4j:7687 + NEO4J_USERNAME: ${PAPI_NEO4J_USERNAME} + NEO4J_PASSWORD: ${PAPI_NEO4J_PASSWORD} papi-read-records-service: restart: always image: ghcr.io/bo2kshelf/read-records-service:develop@sha256:5f00a6f8af47c76663e9c14f70cfc08d6499ee65085befe0b33ca2cd8f0a270d depends_on: - neo4j-api-neo4j: + papi-neo4j: condition: service_healthy networks: - - readonly-neo4j + - papi-neo4j - papi-read-records environment: PORT: 4000 - NEO4J_URL: bolt://neo4j-api-neo4j:7687 - NEO4J_USERNAME: ${NEO4J_API_NEO4J_USERNAME} - NEO4J_PASSWORD: ${NEO4J_API_NEO4J_PASSWORD} + NEO4J_URL: bolt://papi-neo4j:7687 + NEO4J_USERNAME: ${PAPI_NEO4J_USERNAME} + NEO4J_PASSWORD: ${PAPI_NEO4J_PASSWORD} + + papi-neo4j: + restart: always + image: neo4j:4.2@sha256:699af10b322f66d45e42b19dfbab752e09801169165a756c60254bf66c5d2c15 + networks: + - papi-neo4j + healthcheck: &neo4j-healthcheck + test: wget http://localhost:7474/browser -O- + interval: 5s + timeout: 3s + retries: 30 + environment: + NEO4J_AUTH: ${PAPI_NEO4J_USERNAME}/${PAPI_NEO4J_PASSWORD} + NEO4JLABS_PLUGINS: '["apoc"]' + NEO4J_apoc_export_file_enabled: "true" + NEO4J_apoc_import_file_enabled: "true" + NEO4J_apoc_import_file_use__neo4j__config: "true" + volumes: + - papi-neo4j-data:/data + - papi-neo4j-logs:/logs + - papi-neo4j-import:/var/lib/neo4j/import + - papi-neo4j-plugins:/plugins papi-bookcover-service: restart: always @@ -411,31 +206,49 @@ services: restart: always image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:97a0a55e3b970dcd32da69f2ed8c8d3238dfc429bdf33a84f862ed7a995e28a5 depends_on: - neo4j-api-neo4j: + mapi-neo4j: condition: service_healthy networks: - - readonly-neo4j + - mapi-neo4j - mapi-read-contents environment: PORT: 4000 - NEO4J_URL: bolt://neo4j-api-neo4j:7687 - NEO4J_USERNAME: ${NEO4J_API_NEO4J_USERNAME} - NEO4J_PASSWORD: ${NEO4J_API_NEO4J_PASSWORD} + NEO4J_URL: bolt://mapi-neo4j:7687 + NEO4J_USERNAME: ${MAPI_NEO4J_USERNAME} + NEO4J_PASSWORD: ${MAPI_NEO4J_PASSWORD} mapi-edit-contents-service: restart: always image: ghcr.io/bo2kshelf/edit-contents-service:develop@sha256:7f8653677f40414c88a9ec183a11bb24c3c3fec8c325c582002cbda3458a607b depends_on: - neo4j-api-neo4j: + mapi-neo4j: condition: service_healthy networks: - - writable-neo4j + - mapi-neo4j - mapi-edit-contents environment: PORT: 4000 - NEO4J_URL: bolt://neo4j-api-neo4j:7687 - NEO4J_USERNAME: ${NEO4J_API_NEO4J_USERNAME} - NEO4J_PASSWORD: ${NEO4J_API_NEO4J_PASSWORD} + NEO4J_URL: bolt://mapi-neo4j:7687 + NEO4J_USERNAME: ${MAPI_NEO4J_USERNAME} + NEO4J_PASSWORD: ${MAPI_NEO4J_PASSWORD} + + mapi-neo4j: + restart: always + image: neo4j:4.2@sha256:699af10b322f66d45e42b19dfbab752e09801169165a756c60254bf66c5d2c15 + networks: + - mapi-neo4j + healthcheck: *neo4j-healthcheck + environment: + NEO4J_AUTH: ${MAPI_NEO4J_USERNAME}/${MAPI_NEO4J_PASSWORD} + NEO4JLABS_PLUGINS: '["apoc"]' + NEO4J_apoc_export_file_enabled: "true" + NEO4J_apoc_import_file_enabled: "true" + NEO4J_apoc_import_file_use__neo4j__config: "true" + volumes: + - mapi-neo4j-data:/data + - mapi-neo4j-logs:/logs + - mapi-neo4j-import:/var/lib/neo4j/import + - mapi-neo4j-plugins:/plugins mapi-bookcover-service: restart: always @@ -475,51 +288,35 @@ volumes: auth-server-mongo-data: auth-server-postgresql-data: # public + papi-read-users-mysql-data: + papi-neo4j-data: + papi-neo4j-logs: + papi-neo4j-import: + papi-neo4j-plugins: papi-bookcover-service-redis-data: # management + mapi-neo4j-data: + mapi-neo4j-logs: + mapi-neo4j-import: + mapi-neo4j-plugins: mapi-bookcover-service-redis-data: networks: + # imageproxy imageproxy: driver: bridge - readonly-neo4j: - driver: bridge - - writable-neo4j: - driver: bridge - - readonly-users-db: - driver: bridge - - writable-users-db: - driver: bridge - - auth-server: - driver: bridge - - api: - driver: bridge - - users-api: - driver: bridge - - neo4j-api: - driver: bridge - - bookcover-api: - driver: bridge - - search-api: - driver: bridge - # public papi-read-users: driver: bridge + papi-users-mysql: + driver: bridge papi-read-contents: driver: bridge papi-read-records: driver: bridge + papi-neo4j: + driver: bridge papi-bookcover: driver: bridge @@ -528,5 +325,7 @@ networks: driver: bridge mapi-edit-contents: driver: bridge + mapi-neo4j: + driver: bridge mapi-bookcover: driver: bridge From 7fc36a0973e81b6a4b7e0ae0c9f998bb7e3f57e7 Mon Sep 17 00:00:00 2001 From: SnO2WMaN Date: Sat, 1 May 2021 10:59:37 +0900 Subject: [PATCH 2/8] =?UTF-8?q?neo4j=E3=82=AF=E3=83=A9=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 389 +++++++++++++++++++++++++++------------------ 1 file changed, 230 insertions(+), 159 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 9112d8f..a081daa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,70 @@ version: "3.7" +x-redis-healthcheck: &redis-healthcheck + test: ["CMD", "redis-cli", "ping"] + interval: 1s + timeout: 3s + retries: 30 + +x-neo4j-healthcheck: &neo4j-healthcheck + test: wget http://localhost:7474/browser -O- + interval: 10s + timeout: 3s + retries: 50 + +x-neo4j-common-env: &neo4j-common-env + NEO4J_ACCEPT_LICENSE_AGREEMENT: "yes" + NEO4JLABS_PLUGINS: '["apoc"]' + NEO4J_apoc_export_file_enabled: "true" + NEO4J_apoc_import_file_enabled: "true" + NEO4J_apoc_import_file_use__neo4j__config: "true" + NEO4J_dbms_memory_pagecache_size: "100M" + NEO4J_dbms_memory_heap_initial__size: "100M" + NEO4J_causal__clustering_initial__discovery__members: neo4j-secondaly-core-1:5000,neo4j-secondaly-core-2:5000,mapi-edit-contents-neo4j-core:5000 + +x-neo4j-core-env: &neo4j-core-env + <<: *neo4j-common-env + NEO4J_AUTH: ${NEO4J_USERNAME}/${NEO4J_PASSWORD} + NEO4J_dbms_mode: CORE + NEO4J_causal__clustering_expected__core__cluster__size: 3 + +x-neo4j-replica-env: &neo4j-replica-env + <<: *neo4j-common-env + NEO4J_AUTH: ${NEO4J_USERNAME}/${NEO4J_PASSWORD} + NEO4J_dbms_mode: READ_REPLICA + services: + # neo4j + neo4j-secondaly-core-1: + image: neo4j:4.2-enterprise + networks: + - neo4j-cluster + healthcheck: + <<: *neo4j-healthcheck + environment: + <<: *neo4j-core-env + NEO4J_causal__clustering_discovery__advertised__address: neo4j-secondaly-core-1:5000 + volumes: + - neo4j-secondaly-core-1-data:/data + - neo4j-secondaly-core-1-logs:/logs + - neo4j-secondaly-core-1-import:/var/lib/neo4j/import + - neo4j-secondaly-core-1-plugins:/plugins + + neo4j-secondaly-core-2: + image: neo4j:4.2-enterprise + networks: + - neo4j-cluster + healthcheck: + <<: *neo4j-healthcheck + environment: + <<: *neo4j-core-env + NEO4J_causal__clustering_discovery__advertised__address: neo4j-secondaly-core-2:5000 + volumes: + - neo4j-secondaly-core-2-data:/data + - neo4j-secondaly-core-2-logs:/logs + - neo4j-secondaly-core-2-import:/var/lib/neo4j/import + - neo4j-secondaly-core-2-plugins:/plugins + # imageproxy imageproxy: restart: always @@ -19,11 +83,8 @@ services: imageproxy-redis: restart: always image: redis:6@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 - healthcheck: &redis-healthcheck - test: ["CMD", "redis-cli", "ping"] - interval: 1s - timeout: 3s - retries: 30 + healthcheck: + <<: *redis-healthcheck networks: - imageproxy volumes: @@ -41,6 +102,111 @@ services: environment: ADMINER_DESIGN: $ADMINER_DESIGN + # management + management-api-gateway: + restart: always + image: ghcr.io/bo2kshelf/management-api-gateway:develop@sha256:dabb3121952b1e90ba0913e94a8c85dd77947e0acb86bc2164a8e7510766d6fd + depends_on: + mapi-read-contents-service: + condition: service_started + mapi-edit-contents-service: + condition: service_started + mapi-bookcover-service: + condition: service_started + networks: + - mapi-read-contents + - mapi-edit-contents + - mapi-bookcover + ports: + - published: ${MANAGEMENT_API_PORT} + target: 4000 + environment: + PORT: 4000 + READ_CONTENTS_SERVICE_URL: http://mapi-read-contents-service:4000/graphql + EDIT_CONTENTS_SERVICE_URL: http://mapi-edit-contents-service:4000/graphql + BOOKCOVER_SERVICE_URL: http://mapi-bookcover-service:4000/graphql + + mapi-read-contents-service: + restart: always + image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:97a0a55e3b970dcd32da69f2ed8c8d3238dfc429bdf33a84f862ed7a995e28a5 + depends_on: + mapi-read-contents-neo4j-replica: + condition: service_healthy + networks: + - mapi-read-contents + environment: + PORT: 4000 + NEO4J_URL: bolt://mapi-read-contents-neo4j-replica:7687 + NEO4J_USERNAME: ${NEO4J_USERNAME} + NEO4J_PASSWORD: ${NEO4J_PASSWORD} + + mapi-read-contents-neo4j-replica: + image: neo4j:4.2-enterprise + networks: + - neo4j-cluster + - mapi-read-contents + healthcheck: + <<: *neo4j-healthcheck + environment: + <<: *neo4j-replica-env + NEO4J_causal__clustering_discovery__advertised__address: mapi-read-contents-neo4j-replica:5000 + + mapi-edit-contents-service: + restart: always + image: ghcr.io/bo2kshelf/edit-contents-service:develop@sha256:7f8653677f40414c88a9ec183a11bb24c3c3fec8c325c582002cbda3458a607b + depends_on: + mapi-edit-contents-neo4j-core: + condition: service_healthy + networks: + - mapi-edit-contents + environment: + PORT: 4000 + NEO4J_URL: bolt://mapi-edit-contents-neo4j-core:7687 + NEO4J_USERNAME: ${NEO4J_USERNAME} + NEO4J_PASSWORD: ${NEO4J_PASSWORD} + + mapi-edit-contents-neo4j-core: + image: neo4j:4.2-enterprise + networks: + - neo4j-cluster + - mapi-edit-contents + healthcheck: + <<: *neo4j-healthcheck + environment: + <<: *neo4j-core-env + NEO4J_causal__clustering_discovery__advertised__address: mapi-edit-contents-neo4j-core:5000 + volumes: + - mapi-edit-contents-neo4j-core-data:/data + - mapi-edit-contents-neo4j-core-logs:/logs + - mapi-edit-contents-neo4j-core-import:/var/lib/neo4j/import + - mapi-edit-contents-neo4j-core-plugins:/plugins + + mapi-bookcover-service: + restart: always + image: ghcr.io/bo2kshelf/bookcover-service:develop@sha256:b18da695a196e9665e562eace65d65f669620a554607c87fc3a4573594769a07 + networks: + - imageproxy + - mapi-bookcover + depends_on: + papi-bookcover-service-redis: + condition: service_healthy + environment: + PORT: 4000 + RAKUTEN_APPLICATION_ID: $RAKUTEN_APPLICATION_ID + RAKUTEN_APPLICATION_SECRET: $RAKUTEN_APPLICATION_SECRET + IMAGEPROXY_BASE_URL: $IMAGEPROXY_BASE_URL + REDIS_HOST: mapi-bookcover-service-redis + REDIS_PORT: 6379 + + mapi-bookcover-service-redis: + restart: always + image: redis:6@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 + healthcheck: *redis-healthcheck + networks: + - mapi-bookcover + volumes: + - mapi-bookcover-service-redis-data:/data + # public-api public-api-gateway: restart: always @@ -104,53 +270,54 @@ services: restart: always image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:97a0a55e3b970dcd32da69f2ed8c8d3238dfc429bdf33a84f862ed7a995e28a5 depends_on: - papi-neo4j: + papi-read-contents-neo4j-replica: condition: service_healthy networks: - - papi-neo4j - papi-read-contents environment: PORT: 4000 - NEO4J_URL: bolt://papi-neo4j:7687 - NEO4J_USERNAME: ${PAPI_NEO4J_USERNAME} - NEO4J_PASSWORD: ${PAPI_NEO4J_PASSWORD} + NEO4J_URL: bolt://papi-read-contents-neo4j-replica:7687 + NEO4J_USERNAME: ${NEO4J_USERNAME} + NEO4J_PASSWORD: ${NEO4J_PASSWORD} + + papi-read-contents-neo4j-replica: + image: neo4j:4.2-enterprise + networks: + - neo4j-cluster + - papi-read-contents + ports: + - 7474:7474 + - 7687:7687 + healthcheck: + <<: *neo4j-healthcheck + environment: + <<: *neo4j-replica-env + NEO4J_causal__clustering_discovery__advertised__address: papi-read-contents-neo4j-replica:5000 papi-read-records-service: restart: always image: ghcr.io/bo2kshelf/read-records-service:develop@sha256:5f00a6f8af47c76663e9c14f70cfc08d6499ee65085befe0b33ca2cd8f0a270d depends_on: - papi-neo4j: + papi-read-records-neo4j-replica: condition: service_healthy networks: - - papi-neo4j - papi-read-records environment: PORT: 4000 - NEO4J_URL: bolt://papi-neo4j:7687 - NEO4J_USERNAME: ${PAPI_NEO4J_USERNAME} - NEO4J_PASSWORD: ${PAPI_NEO4J_PASSWORD} + NEO4J_URL: bolt://papi-read-records-neo4j-replica:7687 + NEO4J_USERNAME: ${NEO4J_USERNAME} + NEO4J_PASSWORD: ${NEO4J_PASSWORD} - papi-neo4j: - restart: always - image: neo4j:4.2@sha256:699af10b322f66d45e42b19dfbab752e09801169165a756c60254bf66c5d2c15 + papi-read-records-neo4j-replica: + image: neo4j:4.2-enterprise networks: - - papi-neo4j - healthcheck: &neo4j-healthcheck - test: wget http://localhost:7474/browser -O- - interval: 5s - timeout: 3s - retries: 30 + - neo4j-cluster + - papi-read-records + healthcheck: + <<: *neo4j-healthcheck environment: - NEO4J_AUTH: ${PAPI_NEO4J_USERNAME}/${PAPI_NEO4J_PASSWORD} - NEO4JLABS_PLUGINS: '["apoc"]' - NEO4J_apoc_export_file_enabled: "true" - NEO4J_apoc_import_file_enabled: "true" - NEO4J_apoc_import_file_use__neo4j__config: "true" - volumes: - - papi-neo4j-data:/data - - papi-neo4j-logs:/logs - - papi-neo4j-import:/var/lib/neo4j/import - - papi-neo4j-plugins:/plugins + <<: *neo4j-replica-env + NEO4J_causal__clustering_discovery__advertised__address: papi-read-records-neo4j-replica:5000 papi-bookcover-service: restart: always @@ -178,115 +345,25 @@ services: volumes: - papi-bookcover-service-redis-data:/data - # management - management-api-gateway: - restart: always - image: ghcr.io/bo2kshelf/management-api-gateway:develop@sha256:dabb3121952b1e90ba0913e94a8c85dd77947e0acb86bc2164a8e7510766d6fd - depends_on: - mapi-read-contents-service: - condition: service_started - mapi-edit-contents-service: - condition: service_started - mapi-bookcover-service: - condition: service_started - networks: - - mapi-read-contents - - mapi-edit-contents - - mapi-bookcover - ports: - - published: ${MANAGEMENT_API_PORT} - target: 4000 - environment: - PORT: 4000 - READ_CONTENTS_SERVICE_URL: http://mapi-read-contents-service:4000/graphql - EDIT_CONTENTS_SERVICE_URL: http://mapi-edit-contents-service:4000/graphql - BOOKCOVER_SERVICE_URL: http://mapi-bookcover-service:4000/graphql - - mapi-read-contents-service: - restart: always - image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:97a0a55e3b970dcd32da69f2ed8c8d3238dfc429bdf33a84f862ed7a995e28a5 - depends_on: - mapi-neo4j: - condition: service_healthy - networks: - - mapi-neo4j - - mapi-read-contents - environment: - PORT: 4000 - NEO4J_URL: bolt://mapi-neo4j:7687 - NEO4J_USERNAME: ${MAPI_NEO4J_USERNAME} - NEO4J_PASSWORD: ${MAPI_NEO4J_PASSWORD} - - mapi-edit-contents-service: - restart: always - image: ghcr.io/bo2kshelf/edit-contents-service:develop@sha256:7f8653677f40414c88a9ec183a11bb24c3c3fec8c325c582002cbda3458a607b - depends_on: - mapi-neo4j: - condition: service_healthy - networks: - - mapi-neo4j - - mapi-edit-contents - environment: - PORT: 4000 - NEO4J_URL: bolt://mapi-neo4j:7687 - NEO4J_USERNAME: ${MAPI_NEO4J_USERNAME} - NEO4J_PASSWORD: ${MAPI_NEO4J_PASSWORD} - - mapi-neo4j: - restart: always - image: neo4j:4.2@sha256:699af10b322f66d45e42b19dfbab752e09801169165a756c60254bf66c5d2c15 - networks: - - mapi-neo4j - healthcheck: *neo4j-healthcheck - environment: - NEO4J_AUTH: ${MAPI_NEO4J_USERNAME}/${MAPI_NEO4J_PASSWORD} - NEO4JLABS_PLUGINS: '["apoc"]' - NEO4J_apoc_export_file_enabled: "true" - NEO4J_apoc_import_file_enabled: "true" - NEO4J_apoc_import_file_use__neo4j__config: "true" - volumes: - - mapi-neo4j-data:/data - - mapi-neo4j-logs:/logs - - mapi-neo4j-import:/var/lib/neo4j/import - - mapi-neo4j-plugins:/plugins - - mapi-bookcover-service: - restart: always - image: ghcr.io/bo2kshelf/bookcover-service:develop@sha256:b18da695a196e9665e562eace65d65f669620a554607c87fc3a4573594769a07 - networks: - - imageproxy - - mapi-bookcover - depends_on: - papi-bookcover-service-redis: - condition: service_healthy - environment: - PORT: 4000 - RAKUTEN_APPLICATION_ID: $RAKUTEN_APPLICATION_ID - RAKUTEN_APPLICATION_SECRET: $RAKUTEN_APPLICATION_SECRET - IMAGEPROXY_BASE_URL: $IMAGEPROXY_BASE_URL - REDIS_HOST: mapi-bookcover-service-redis - REDIS_PORT: 6379 - - mapi-bookcover-service-redis: - restart: always - image: redis:6@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 - healthcheck: *redis-healthcheck - networks: - - mapi-bookcover - volumes: - - mapi-bookcover-service-redis-data:/data - volumes: + # imageproxy imageproxy-redis-data: - users-api-mysql-data: - bookcover-api-redis-data: - neo4j-api-neo4j-data: - neo4j-api-neo4j-logs: - neo4j-api-neo4j-import: - neo4j-api-neo4j-plugins: - search-api-elasticsearch: - auth-server-mongo-data: - auth-server-postgresql-data: + # neo4j + neo4j-secondaly-core-1-data: + neo4j-secondaly-core-1-logs: + neo4j-secondaly-core-1-import: + neo4j-secondaly-core-1-plugins: + + neo4j-secondaly-core-2-data: + neo4j-secondaly-core-2-logs: + neo4j-secondaly-core-2-import: + neo4j-secondaly-core-2-plugins: + # management + mapi-edit-contents-neo4j-core-data: + mapi-edit-contents-neo4j-core-logs: + mapi-edit-contents-neo4j-core-import: + mapi-edit-contents-neo4j-core-plugins: + mapi-bookcover-service-redis-data: # public papi-read-users-mysql-data: papi-neo4j-data: @@ -294,18 +371,24 @@ volumes: papi-neo4j-import: papi-neo4j-plugins: papi-bookcover-service-redis-data: - # management - mapi-neo4j-data: - mapi-neo4j-logs: - mapi-neo4j-import: - mapi-neo4j-plugins: - mapi-bookcover-service-redis-data: networks: + # neo4j + neo4j-cluster: + driver: bridge + # imageproxy imageproxy: driver: bridge + # management + mapi-read-contents: + driver: bridge + mapi-edit-contents: + driver: bridge + mapi-bookcover: + driver: bridge + # public papi-read-users: driver: bridge @@ -315,17 +398,5 @@ networks: driver: bridge papi-read-records: driver: bridge - papi-neo4j: - driver: bridge papi-bookcover: driver: bridge - - # management - mapi-read-contents: - driver: bridge - mapi-edit-contents: - driver: bridge - mapi-neo4j: - driver: bridge - mapi-bookcover: - driver: bridge From ce0243026d5d643918166245f0f16ab4e4b782e0 Mon Sep 17 00:00:00 2001 From: SnO2WMaN Date: Sat, 1 May 2021 20:09:10 +0900 Subject: [PATCH 3/8] =?UTF-8?q?healthcheck=E3=82=92=E3=83=9E=E3=82=B7?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a081daa..c1462a1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,12 @@ x-neo4j-healthcheck: &neo4j-healthcheck timeout: 3s retries: 50 +x-neo4j-healthcheck: &mysql-healthcheck + test: "mysqladmin ping -h localhost" + interval: 10s + timeout: 20s + retries: 10 + x-neo4j-common-env: &neo4j-common-env NEO4J_ACCEPT_LICENSE_AGREEMENT: "yes" NEO4JLABS_PLUGINS: '["apoc"]' @@ -39,8 +45,7 @@ services: image: neo4j:4.2-enterprise networks: - neo4j-cluster - healthcheck: - <<: *neo4j-healthcheck + healthcheck: *neo4j-healthcheck environment: <<: *neo4j-core-env NEO4J_causal__clustering_discovery__advertised__address: neo4j-secondaly-core-1:5000 @@ -54,8 +59,7 @@ services: image: neo4j:4.2-enterprise networks: - neo4j-cluster - healthcheck: - <<: *neo4j-healthcheck + healthcheck: *neo4j-healthcheck environment: <<: *neo4j-core-env NEO4J_causal__clustering_discovery__advertised__address: neo4j-secondaly-core-2:5000 @@ -83,8 +87,7 @@ services: imageproxy-redis: restart: always image: redis:6@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 - healthcheck: - <<: *redis-healthcheck + healthcheck: *redis-healthcheck networks: - imageproxy volumes: @@ -145,8 +148,7 @@ services: networks: - neo4j-cluster - mapi-read-contents - healthcheck: - <<: *neo4j-healthcheck + healthcheck: *neo4j-healthcheck environment: <<: *neo4j-replica-env NEO4J_causal__clustering_discovery__advertised__address: mapi-read-contents-neo4j-replica:5000 @@ -170,8 +172,7 @@ services: networks: - neo4j-cluster - mapi-edit-contents - healthcheck: - <<: *neo4j-healthcheck + healthcheck: *neo4j-healthcheck environment: <<: *neo4j-core-env NEO4J_causal__clustering_discovery__advertised__address: mapi-edit-contents-neo4j-core:5000 @@ -260,11 +261,7 @@ services: MYSQL_DATABASE: ${PAPI_USERS_MYSQL_DATABASE} volumes: - papi-read-users-mysql-data:/var/lib/mysql - healthcheck: &mysql-healthcheck - test: "mysqladmin ping -h localhost" - interval: 10s - timeout: 20s - retries: 10 + healthcheck: *mysql-healthcheck papi-read-contents-service: restart: always @@ -288,8 +285,7 @@ services: ports: - 7474:7474 - 7687:7687 - healthcheck: - <<: *neo4j-healthcheck + healthcheck: *neo4j-healthcheck environment: <<: *neo4j-replica-env NEO4J_causal__clustering_discovery__advertised__address: papi-read-contents-neo4j-replica:5000 @@ -313,8 +309,7 @@ services: networks: - neo4j-cluster - papi-read-records - healthcheck: - <<: *neo4j-healthcheck + healthcheck: *neo4j-healthcheck environment: <<: *neo4j-replica-env NEO4J_causal__clustering_discovery__advertised__address: papi-read-records-neo4j-replica:5000 From 67bf7efc7d7e61d7d1fd411f3c44205e8ef64ca6 Mon Sep 17 00:00:00 2001 From: SnO2WMaN Date: Sun, 2 May 2021 05:40:44 +0900 Subject: [PATCH 4/8] =?UTF-8?q?readreplica=E3=81=AE=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c1462a1..142f79f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -131,7 +131,7 @@ services: mapi-read-contents-service: restart: always - image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:97a0a55e3b970dcd32da69f2ed8c8d3238dfc429bdf33a84f862ed7a995e28a5 + image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:3aa9278735594845b159c5cf36fb203b1309e067189632937f62ce49e9c708a9 depends_on: mapi-read-contents-neo4j-replica: condition: service_healthy @@ -139,7 +139,7 @@ services: - mapi-read-contents environment: PORT: 4000 - NEO4J_URL: bolt://mapi-read-contents-neo4j-replica:7687 + NEO4J_URL: neo4j://mapi-read-contents-neo4j-replica:7687 NEO4J_USERNAME: ${NEO4J_USERNAME} NEO4J_PASSWORD: ${NEO4J_PASSWORD} @@ -265,7 +265,7 @@ services: papi-read-contents-service: restart: always - image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:97a0a55e3b970dcd32da69f2ed8c8d3238dfc429bdf33a84f862ed7a995e28a5 + image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:3aa9278735594845b159c5cf36fb203b1309e067189632937f62ce49e9c708a9 depends_on: papi-read-contents-neo4j-replica: condition: service_healthy @@ -273,7 +273,7 @@ services: - papi-read-contents environment: PORT: 4000 - NEO4J_URL: bolt://papi-read-contents-neo4j-replica:7687 + NEO4J_URL: neo4j://papi-read-contents-neo4j-replica:7687 NEO4J_USERNAME: ${NEO4J_USERNAME} NEO4J_PASSWORD: ${NEO4J_PASSWORD} @@ -282,9 +282,6 @@ services: networks: - neo4j-cluster - papi-read-contents - ports: - - 7474:7474 - - 7687:7687 healthcheck: *neo4j-healthcheck environment: <<: *neo4j-replica-env @@ -292,7 +289,7 @@ services: papi-read-records-service: restart: always - image: ghcr.io/bo2kshelf/read-records-service:develop@sha256:5f00a6f8af47c76663e9c14f70cfc08d6499ee65085befe0b33ca2cd8f0a270d + image: ghcr.io/bo2kshelf/read-records-service:develop@sha256:44ba6f46f0d39d413e9787feac78ecef58965b1ccceced03d79072cc1a04726b depends_on: papi-read-records-neo4j-replica: condition: service_healthy @@ -300,7 +297,7 @@ services: - papi-read-records environment: PORT: 4000 - NEO4J_URL: bolt://papi-read-records-neo4j-replica:7687 + NEO4J_URL: neo4j://papi-read-records-neo4j-replica:7687 NEO4J_USERNAME: ${NEO4J_USERNAME} NEO4J_PASSWORD: ${NEO4J_PASSWORD} From bc1daccc9e45cb82ca08081415833ee62e55f90b Mon Sep 17 00:00:00 2001 From: SnO2WMaN Date: Sun, 2 May 2021 07:17:11 +0900 Subject: [PATCH 5/8] =?UTF-8?q?neo4j=E3=82=AF=E3=83=A9=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E5=91=A8=E3=82=8A=E4=BF=AE=E6=AD=A3(wip)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 97 ++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 46 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 142f79f..1b8dd60 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,7 +26,7 @@ x-neo4j-common-env: &neo4j-common-env NEO4J_apoc_import_file_use__neo4j__config: "true" NEO4J_dbms_memory_pagecache_size: "100M" NEO4J_dbms_memory_heap_initial__size: "100M" - NEO4J_causal__clustering_initial__discovery__members: neo4j-secondaly-core-1:5000,neo4j-secondaly-core-2:5000,mapi-edit-contents-neo4j-core:5000 + NEO4J_causal__clustering_initial__discovery__members: neo4j-core-1:5000,neo4j-core-2:5000,neo4j-core-3:5000 x-neo4j-core-env: &neo4j-core-env <<: *neo4j-common-env @@ -41,33 +41,52 @@ x-neo4j-replica-env: &neo4j-replica-env services: # neo4j - neo4j-secondaly-core-1: + neo4j-core-1: + image: neo4j:4.2-enterprise + networks: + - neo4j-cluster + ports: + - published: 7474 + target: 7474 + - published: 7687 + target: 7687 + healthcheck: *neo4j-healthcheck + environment: + <<: *neo4j-core-env + NEO4J_causal__clustering_discovery__advertised__address: neo4j-core-1:5000 + volumes: + - neo4j-core-1-data:/data + - neo4j-core-1-logs:/logs + - neo4j-core-1-import:/var/lib/neo4j/import + - neo4j-core-1-plugins:/plugins + + neo4j-core-2: image: neo4j:4.2-enterprise networks: - neo4j-cluster healthcheck: *neo4j-healthcheck environment: <<: *neo4j-core-env - NEO4J_causal__clustering_discovery__advertised__address: neo4j-secondaly-core-1:5000 + NEO4J_causal__clustering_discovery__advertised__address: neo4j-core-2:5000 volumes: - - neo4j-secondaly-core-1-data:/data - - neo4j-secondaly-core-1-logs:/logs - - neo4j-secondaly-core-1-import:/var/lib/neo4j/import - - neo4j-secondaly-core-1-plugins:/plugins + - neo4j-core-2-data:/data + - neo4j-core-2-logs:/logs + - neo4j-core-2-import:/var/lib/neo4j/import + - neo4j-core-2-plugins:/plugins - neo4j-secondaly-core-2: + neo4j-core-3: image: neo4j:4.2-enterprise networks: - neo4j-cluster healthcheck: *neo4j-healthcheck environment: <<: *neo4j-core-env - NEO4J_causal__clustering_discovery__advertised__address: neo4j-secondaly-core-2:5000 + NEO4J_causal__clustering_discovery__advertised__address: neo4j-core-3:5000 volumes: - - neo4j-secondaly-core-2-data:/data - - neo4j-secondaly-core-2-logs:/logs - - neo4j-secondaly-core-2-import:/var/lib/neo4j/import - - neo4j-secondaly-core-2-plugins:/plugins + - neo4j-core-3-data:/data + - neo4j-core-3-logs:/logs + - neo4j-core-3-import:/var/lib/neo4j/import + - neo4j-core-3-plugins:/plugins # imageproxy imageproxy: @@ -151,37 +170,23 @@ services: healthcheck: *neo4j-healthcheck environment: <<: *neo4j-replica-env - NEO4J_causal__clustering_discovery__advertised__address: mapi-read-contents-neo4j-replica:5000 mapi-edit-contents-service: restart: always - image: ghcr.io/bo2kshelf/edit-contents-service:develop@sha256:7f8653677f40414c88a9ec183a11bb24c3c3fec8c325c582002cbda3458a607b + image: ghcr.io/bo2kshelf/edit-contents-service:develop@sha256:c977f55605365b4b60950bb729c66bcf3b9e168b4dcaf325c2adaada96bf5d6d + tty: true depends_on: - mapi-edit-contents-neo4j-core: + neo4j-core-1: condition: service_healthy networks: + - neo4j-cluster - mapi-edit-contents environment: PORT: 4000 - NEO4J_URL: bolt://mapi-edit-contents-neo4j-core:7687 + NEO4J_URL: neo4j://neo4j-core-1:7687 NEO4J_USERNAME: ${NEO4J_USERNAME} NEO4J_PASSWORD: ${NEO4J_PASSWORD} - mapi-edit-contents-neo4j-core: - image: neo4j:4.2-enterprise - networks: - - neo4j-cluster - - mapi-edit-contents - healthcheck: *neo4j-healthcheck - environment: - <<: *neo4j-core-env - NEO4J_causal__clustering_discovery__advertised__address: mapi-edit-contents-neo4j-core:5000 - volumes: - - mapi-edit-contents-neo4j-core-data:/data - - mapi-edit-contents-neo4j-core-logs:/logs - - mapi-edit-contents-neo4j-core-import:/var/lib/neo4j/import - - mapi-edit-contents-neo4j-core-plugins:/plugins - mapi-bookcover-service: restart: always image: ghcr.io/bo2kshelf/bookcover-service:develop@sha256:b18da695a196e9665e562eace65d65f669620a554607c87fc3a4573594769a07 @@ -285,7 +290,6 @@ services: healthcheck: *neo4j-healthcheck environment: <<: *neo4j-replica-env - NEO4J_causal__clustering_discovery__advertised__address: papi-read-contents-neo4j-replica:5000 papi-read-records-service: restart: always @@ -341,20 +345,21 @@ volumes: # imageproxy imageproxy-redis-data: # neo4j - neo4j-secondaly-core-1-data: - neo4j-secondaly-core-1-logs: - neo4j-secondaly-core-1-import: - neo4j-secondaly-core-1-plugins: - - neo4j-secondaly-core-2-data: - neo4j-secondaly-core-2-logs: - neo4j-secondaly-core-2-import: - neo4j-secondaly-core-2-plugins: + neo4j-core-1-data: + neo4j-core-1-logs: + neo4j-core-1-import: + neo4j-core-1-plugins: + + neo4j-core-2-data: + neo4j-core-2-logs: + neo4j-core-2-import: + neo4j-core-2-plugins: + + neo4j-core-3-data: + neo4j-core-3-logs: + neo4j-core-3-import: + neo4j-core-3-plugins: # management - mapi-edit-contents-neo4j-core-data: - mapi-edit-contents-neo4j-core-logs: - mapi-edit-contents-neo4j-core-import: - mapi-edit-contents-neo4j-core-plugins: mapi-bookcover-service-redis-data: # public papi-read-users-mysql-data: From 0e8a37efe7a9f37704725f415c6fdb16b994f232 Mon Sep 17 00:00:00 2001 From: SnO2WMaN Date: Sun, 2 May 2021 11:27:02 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=E7=B4=B0=E3=81=8B=E3=81=84=E3=83=9F?= =?UTF-8?q?=E3=82=B9=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1b8dd60..c11327e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,7 +12,7 @@ x-neo4j-healthcheck: &neo4j-healthcheck timeout: 3s retries: 50 -x-neo4j-healthcheck: &mysql-healthcheck +x-mysql-healthcheck: &mysql-healthcheck test: "mysqladmin ping -h localhost" interval: 10s timeout: 20s @@ -64,6 +64,11 @@ services: image: neo4j:4.2-enterprise networks: - neo4j-cluster + ports: + - published: 7475 + target: 7474 + - published: 7688 + target: 7687 healthcheck: *neo4j-healthcheck environment: <<: *neo4j-core-env @@ -78,6 +83,11 @@ services: image: neo4j:4.2-enterprise networks: - neo4j-cluster + ports: + - published: 7476 + target: 7474 + - published: 7689 + target: 7687 healthcheck: *neo4j-healthcheck environment: <<: *neo4j-core-env @@ -363,10 +373,6 @@ volumes: mapi-bookcover-service-redis-data: # public papi-read-users-mysql-data: - papi-neo4j-data: - papi-neo4j-logs: - papi-neo4j-import: - papi-neo4j-plugins: papi-bookcover-service-redis-data: networks: From 356578b295d1ebdca02297adb86edf6ef2ce0410 Mon Sep 17 00:00:00 2001 From: SnO2WMaN Date: Mon, 3 May 2021 11:10:36 +0900 Subject: [PATCH 7/8] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=B0=E3=81=AF=E3=81=99=E3=82=8B=E3=81=8C?= =?UTF-8?q?readreplica=E3=81=AF=E4=BD=BF=E7=94=A8=E3=81=97=E3=81=AA?= =?UTF-8?q?=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 185 ++++++++++++++++++++++----------------------- 1 file changed, 89 insertions(+), 96 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c11327e..06c84ad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,80 +32,107 @@ x-neo4j-core-env: &neo4j-core-env <<: *neo4j-common-env NEO4J_AUTH: ${NEO4J_USERNAME}/${NEO4J_PASSWORD} NEO4J_dbms_mode: CORE - NEO4J_causal__clustering_expected__core__cluster__size: 3 + NEO4J_dbms_default__database: $NEO4J_CONTENTS_DATABASE + NEO4J_causal__clustering_minimum__core__cluster__size__at__formation: 3 + NEO4J_causal__clustering_minimum__core__cluster__size__at__runtime: 3 + +x-neo4j-fabric-env: &neo4j-fabric-env + <<: *neo4j-common-env + NEO4J_AUTH: ${NEO4J_USERNAME}/${NEO4J_PASSWORD} + NEO4J_dbms_mode: SINGLE + NEO4J_fabric_database_name: $NEO4J_FABRIC_DATABASE + NEO4J_fabric_routing_servers: neo4j-fabric-1:7687 + NEO4J_fabric_graph_0_name: $NEO4J_CONTENTS_GRAPH_NAME + NEO4J_fabric_graph_0_database: $NEO4J_CONTENTS_DATABASE + NEO4J_fabric_graph_0_uri: neo4j://neo4j-core-1:7687,neo4j://neo4j-core-2:7687,neo4j://neo4j-core-3:7687 x-neo4j-replica-env: &neo4j-replica-env <<: *neo4j-common-env NEO4J_AUTH: ${NEO4J_USERNAME}/${NEO4J_PASSWORD} NEO4J_dbms_mode: READ_REPLICA + NEO4J_dbms_default__database: $NEO4J_CONTENTS_DATABASE services: - # neo4j neo4j-core-1: + hostname: neo4j-core-1 image: neo4j:4.2-enterprise networks: - neo4j-cluster - ports: - - published: 7474 - target: 7474 - - published: 7687 - target: 7687 healthcheck: *neo4j-healthcheck - environment: - <<: *neo4j-core-env - NEO4J_causal__clustering_discovery__advertised__address: neo4j-core-1:5000 volumes: + - neo4j-core-1-conf:/conf - neo4j-core-1-data:/data - neo4j-core-1-logs:/logs - neo4j-core-1-import:/var/lib/neo4j/import + - neo4j-core-1-metrics:/metrics - neo4j-core-1-plugins:/plugins + environment: + <<: *neo4j-core-env + NEO4J_dbms_connector_bolt_advertised__address: neo4j-core-1:7687 neo4j-core-2: + hostname: neo4j-core-2 image: neo4j:4.2-enterprise networks: - neo4j-cluster - ports: - - published: 7475 - target: 7474 - - published: 7688 - target: 7687 healthcheck: *neo4j-healthcheck - environment: - <<: *neo4j-core-env - NEO4J_causal__clustering_discovery__advertised__address: neo4j-core-2:5000 volumes: + - neo4j-core-2-conf:/conf - neo4j-core-2-data:/data - neo4j-core-2-logs:/logs - neo4j-core-2-import:/var/lib/neo4j/import + - neo4j-core-2-metrics:/metrics - neo4j-core-2-plugins:/plugins + environment: + <<: *neo4j-core-env + NEO4J_dbms_connector_bolt_advertised__address: neo4j-core-2:7687 neo4j-core-3: + hostname: neo4j-core-3 image: neo4j:4.2-enterprise networks: - neo4j-cluster - ports: - - published: 7476 - target: 7474 - - published: 7689 - target: 7687 healthcheck: *neo4j-healthcheck - environment: - <<: *neo4j-core-env - NEO4J_causal__clustering_discovery__advertised__address: neo4j-core-3:5000 volumes: + - neo4j-core-3-conf:/conf - neo4j-core-3-data:/data - neo4j-core-3-logs:/logs - neo4j-core-3-import:/var/lib/neo4j/import + - neo4j-core-3-metrics:/metrics - neo4j-core-3-plugins:/plugins + environment: + <<: *neo4j-core-env + NEO4J_dbms_connector_bolt_advertised__address: neo4j-core-3:7687 + + neo4j-fabric-1: + hostname: neo4j-fabric-1 + image: neo4j:4.2-enterprise + networks: + - neo4j-cluster + - neo4j-fabric + ports: + - published: 17474 + target: 7474 + - published: 17687 + target: 7687 + healthcheck: *neo4j-healthcheck + volumes: + - neo4j-fabric-1-conf:/conf + - neo4j-fabric-1-data:/data + - neo4j-fabric-1-logs:/logs + - neo4j-fabric-1-import:/var/lib/neo4j/import + - neo4j-fabric-1-metrics:/metrics + - neo4j-fabric-1-plugins:/plugins + environment: + <<: *neo4j-fabric-env # imageproxy imageproxy: - restart: always image: willnorris/imageproxy@sha256:7e4c77d1b64db9152591dbfd8565d5d377eb8a243040efa4e241b97ba94feb1d networks: - imageproxy ports: - - published: ${IMAGEPROXY_PORT} + - published: $IMAGEPROXY_PORT target: 8080 depends_on: imageproxy-redis: @@ -114,7 +141,6 @@ services: IMAGEPROXY_CACHE: redis://imageproxy-redis:6379 imageproxy-redis: - restart: always image: redis:6@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 healthcheck: *redis-healthcheck networks: @@ -124,7 +150,6 @@ services: # for development tools adminer: - restart: always image: adminer:standalone@sha256:370c04eb26f585c408986d89d1d9c5e62f387d4afdd5a49aa13f7c5f53790262 networks: - papi-users-mysql @@ -136,7 +161,6 @@ services: # management management-api-gateway: - restart: always image: ghcr.io/bo2kshelf/management-api-gateway:develop@sha256:dabb3121952b1e90ba0913e94a8c85dd77947e0acb86bc2164a8e7510766d6fd depends_on: mapi-read-contents-service: @@ -159,52 +183,42 @@ services: BOOKCOVER_SERVICE_URL: http://mapi-bookcover-service:4000/graphql mapi-read-contents-service: - restart: always image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:3aa9278735594845b159c5cf36fb203b1309e067189632937f62ce49e9c708a9 depends_on: - mapi-read-contents-neo4j-replica: + neo4j-fabric-1: condition: service_healthy networks: + - neo4j-fabric - mapi-read-contents environment: PORT: 4000 - NEO4J_URL: neo4j://mapi-read-contents-neo4j-replica:7687 + NEO4J_URL: neo4j://neo4j-fabric-1:7687 NEO4J_USERNAME: ${NEO4J_USERNAME} NEO4J_PASSWORD: ${NEO4J_PASSWORD} - mapi-read-contents-neo4j-replica: - image: neo4j:4.2-enterprise - networks: - - neo4j-cluster - - mapi-read-contents - healthcheck: *neo4j-healthcheck - environment: - <<: *neo4j-replica-env - mapi-edit-contents-service: - restart: always image: ghcr.io/bo2kshelf/edit-contents-service:develop@sha256:c977f55605365b4b60950bb729c66bcf3b9e168b4dcaf325c2adaada96bf5d6d - tty: true + # build: + # context: ./edit-contents-service + # dockerfile: Dockerfile depends_on: - neo4j-core-1: + neo4j-fabric-1: condition: service_healthy networks: - - neo4j-cluster + - neo4j-fabric - mapi-edit-contents environment: PORT: 4000 - NEO4J_URL: neo4j://neo4j-core-1:7687 + NEO4J_URL: neo4j://neo4j-fabric-1:7687 NEO4J_USERNAME: ${NEO4J_USERNAME} NEO4J_PASSWORD: ${NEO4J_PASSWORD} mapi-bookcover-service: - restart: always image: ghcr.io/bo2kshelf/bookcover-service:develop@sha256:b18da695a196e9665e562eace65d65f669620a554607c87fc3a4573594769a07 networks: - - imageproxy - mapi-bookcover depends_on: - papi-bookcover-service-redis: + mapi-bookcover-service-redis: condition: service_healthy environment: PORT: 4000 @@ -215,7 +229,6 @@ services: REDIS_PORT: 6379 mapi-bookcover-service-redis: - restart: always image: redis:6@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 healthcheck: *redis-healthcheck networks: @@ -225,7 +238,6 @@ services: # public-api public-api-gateway: - restart: always image: ghcr.io/bo2kshelf/public-api-gateway:develop@sha256:ea7e33f9a076a20ff7a0a434633729c35dcb7604162a87efabfd672bbe779559 depends_on: papi-bookcover-service: @@ -252,7 +264,6 @@ services: READ_RECORDS_SERVICE_URL: http://papi-read-records-service:4000/graphql papi-read-users-service: - restart: always image: ghcr.io/bo2kshelf/read-users-service:develop@sha256:04ce0b1215636e1a05b4f47f742f02605c752c2f43ef5d709add3f0b2b6f167b depends_on: papi-users-mysql: @@ -266,7 +277,6 @@ services: IMAGEPROXY_BASE_URL: $IMAGEPROXY_BASE_URL papi-users-mysql: - restart: always image: mysql:8.0@sha256:04ee7141256e83797ea4a84a4d31b1f1bc10111c8d1bc1879d52729ccd19e20a networks: - papi-users-mysql @@ -279,54 +289,34 @@ services: healthcheck: *mysql-healthcheck papi-read-contents-service: - restart: always image: ghcr.io/bo2kshelf/read-contents-service:develop@sha256:3aa9278735594845b159c5cf36fb203b1309e067189632937f62ce49e9c708a9 depends_on: - papi-read-contents-neo4j-replica: + neo4j-fabric-1: condition: service_healthy networks: + - neo4j-fabric - papi-read-contents environment: PORT: 4000 - NEO4J_URL: neo4j://papi-read-contents-neo4j-replica:7687 + NEO4J_URL: neo4j://neo4j-fabric-1:7687 NEO4J_USERNAME: ${NEO4J_USERNAME} NEO4J_PASSWORD: ${NEO4J_PASSWORD} - papi-read-contents-neo4j-replica: - image: neo4j:4.2-enterprise - networks: - - neo4j-cluster - - papi-read-contents - healthcheck: *neo4j-healthcheck - environment: - <<: *neo4j-replica-env - papi-read-records-service: - restart: always image: ghcr.io/bo2kshelf/read-records-service:develop@sha256:44ba6f46f0d39d413e9787feac78ecef58965b1ccceced03d79072cc1a04726b depends_on: - papi-read-records-neo4j-replica: + neo4j-fabric-1: condition: service_healthy networks: + - neo4j-fabric - papi-read-records environment: PORT: 4000 - NEO4J_URL: neo4j://papi-read-records-neo4j-replica:7687 + NEO4J_URL: neo4j://neo4j-fabric-1:7687 NEO4J_USERNAME: ${NEO4J_USERNAME} NEO4J_PASSWORD: ${NEO4J_PASSWORD} - papi-read-records-neo4j-replica: - image: neo4j:4.2-enterprise - networks: - - neo4j-cluster - - papi-read-records - healthcheck: *neo4j-healthcheck - environment: - <<: *neo4j-replica-env - NEO4J_causal__clustering_discovery__advertised__address: papi-read-records-neo4j-replica:5000 - papi-bookcover-service: - restart: always image: ghcr.io/bo2kshelf/bookcover-service:develop@sha256:b18da695a196e9665e562eace65d65f669620a554607c87fc3a4573594769a07 networks: - papi-bookcover @@ -343,7 +333,6 @@ services: REDIS_PORT: 6379 papi-bookcover-service-redis: - restart: always image: redis:6@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396 healthcheck: *redis-healthcheck networks: @@ -354,23 +343,39 @@ services: volumes: # imageproxy imageproxy-redis-data: + # neo4j + neo4j-core-1-conf: neo4j-core-1-data: neo4j-core-1-logs: neo4j-core-1-import: + neo4j-core-1-metrics: neo4j-core-1-plugins: + neo4j-core-2-conf: neo4j-core-2-data: neo4j-core-2-logs: neo4j-core-2-import: + neo4j-core-2-metrics: neo4j-core-2-plugins: + neo4j-core-3-conf: neo4j-core-3-data: neo4j-core-3-logs: neo4j-core-3-import: + neo4j-core-3-metrics: neo4j-core-3-plugins: + + neo4j-fabric-1-conf: + neo4j-fabric-1-data: + neo4j-fabric-1-logs: + neo4j-fabric-1-import: + neo4j-fabric-1-metrics: + neo4j-fabric-1-plugins: + # management mapi-bookcover-service-redis-data: + # public papi-read-users-mysql-data: papi-bookcover-service-redis-data: @@ -378,28 +383,16 @@ volumes: networks: # neo4j neo4j-cluster: - driver: bridge - + neo4j-fabric: # imageproxy imageproxy: - driver: bridge - # management mapi-read-contents: - driver: bridge mapi-edit-contents: - driver: bridge mapi-bookcover: - driver: bridge - - # public + # public papi-read-users: - driver: bridge papi-users-mysql: - driver: bridge papi-read-contents: - driver: bridge papi-read-records: - driver: bridge papi-bookcover: - driver: bridge From 1cfc1b783be0d752fc721f58f5ec6b40b7323597 Mon Sep 17 00:00:00 2001 From: SnO2WMaN Date: Mon, 3 May 2021 11:20:34 +0900 Subject: [PATCH 8/8] =?UTF-8?q?=E7=92=B0=E5=A2=83=E5=A4=89=E6=95=B0?= =?UTF-8?q?=E3=81=AE=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 71 +++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 40 deletions(-) diff --git a/.env.example b/.env.example index 5e94f63..f697605 100644 --- a/.env.example +++ b/.env.example @@ -1,45 +1,36 @@ # Adminer ADMINER_PORT=13000 -ADMINER_DESIGN=pepa-linha +ADMINER_DESIGN="pepa-linha" -# Imageproxy +# Portainer +PORTAINER_PORT=9000 + +# chore +RAKUTEN_APPLICATION_ID= +RAKUTEN_APPLICATION_SECRET= + +GITHUB_CLIENT_ID= +GITHUB_CLIENT_SECRET= + +# Neo4j +NEO4J_USERNAME="neo4j" +NEO4J_PASSWORD= + +NEO4J_FABRIC_DATABASE="fabric" + +NEO4J_CONTENTS_DATABASE="contents" +NEO4J_CONTENTS_GRAPH_NAME="contents" + +# imageproxy IMAGEPROXY_PORT=12000 IMAGEPROXY_HOST="localhost" -IMAGEPROXY_BASE_URL="http://localhost:${IMAGEPROXY_PORT}" - -# Auth Server -AUTH_SERVER_PORT=10001 -AUTH_SERVER_SESSION_NAME="bo2kshelf.sid" -AUTH_SERVER_SESSION_SECRET=# openssl rand --hex 64 -AUTH_SERVER_JWT_SECRET=# openssl rand --hex 64 -AUTH_SERVER_MONGO_USERNAME="user" -AUTH_SERVER_MONGO_PASSWORD=# openssl rand --hex 64 -AUTH_SERVER_MONGO_DATABASE="sessions" -AUTH_SERVER_POSTGRES_PASSWORD=# openssl rand --hex 64 -AUTH_SERVER_POSTGRES_DATABASE="authapi" - -# API Gateway -API_GATEWAY_PORT=11000 -API_GATEWAY_JWT_SECRET=${AUTH_SERVER_JWT_SECRET} - -# Neo4j API -NEO4J_API_PORT=11001 -NEO4J_API_NEO4J_USERNAME="neo4j" -NEO4J_API_NEO4J_PASSWORD=# openssl rand --hex 64 - -# Bookcover API -BOOKCOVER_API_PORT=11002 -RAKUTEN_APPLICATION_ID=# required -RAKUTEN_APPLICATION_SECRET=# required - -# Users API -USERS_API_PORT=11003 -USERS_API_MYSQL_ROOT_PASSWORD=# openssl rand --hex 64 -USERS_API_MYSQL_DATABASE="db" -USERS_API_JWT_SECRET=${AUTH_SERVER_JWT_SECRET} - -GITHUB_CLIENT_ID=# required -GITHUB_CLIENT_SECRET=# required - -# Search API -SEARCH_API_PORT=11004 +IMAGEPROXY_BASE_URL="http://${IMAGEPROXY_HOST}:${IMAGEPROXY_PORT}" + +# Public API +PUBLIC_API_PORT=8080 + +PAPI_USERS_MYSQL_ROOT_PASSWORD= +PAPI_USERS_MYSQL_DATABASE="db" + +# Management API +MANAGEMENT_API_PORT=9090