diff --git a/audius-cli b/audius-cli index 9d743628d..11f7d0ee8 100755 --- a/audius-cli +++ b/audius-cli @@ -22,15 +22,18 @@ RECOMMENDED_MEMORY = 16 * GB RECOMMENDED_STORAGE = { "creator-node": 2048 * GB, "discovery-provider": 256 * GB, + "identity-service": 256 * GB, } SERVICE_PORTS = { "discovery-provider": "5000", "creator-node": "4000", - "identity-server": "7000", + "identity-service": "7000", } -service_type = click.Choice(["creator-node", "discovery-provider"]) +SERVICES = ("creator-node", "discovery-provider", "identity-service") + +service_type = click.Choice(SERVICES) network_type = click.Choice(["prod", "stage"]) container_type = click.Choice(["backend", "cache", "db"]) @@ -247,7 +250,7 @@ def restart(ctx, service, containers): """Restart a service/container""" services = [service] if service is None: - services = ["discovery-provider", "creator-node"] + services = SERVICES for service in services: proc = subprocess.run( @@ -289,6 +292,29 @@ def restart(ctx, service, containers): ) +@cli.command() +@click.argument("service", type=service_type, required=False) +@click.argument("containers", type=container_type, nargs=-1) +@click.pass_context +def down(ctx, service, containers): + """Restart a service/container""" + services = [service] + if service is None: + services = SERVICES + + for service in services: + subprocess.run( + [ + "docker", + "compose", + "--project-directory", + ctx.obj["manifests_path"] / service, + "down", + *containers, + ], + ) + + @cli.command() @click.option("--unset", is_flag=True) @click.option("--required", is_flag=True) @@ -382,7 +408,7 @@ def set_tag(ctx, unset, tag): if not unset and tag is None: tag = click.prompt(click.style("Tag", bold=True)) - for service in ["creator-node", "discovery-provider"]: + for service in SERVICES: env_file = ctx.obj["manifests_path"] / service / ".env" if unset: @@ -400,7 +426,7 @@ def set_network(ctx, unset, network): if not unset and network is None: network = click.prompt(click.style("Network", bold=True)) - for service in ["creator-node", "discovery-provider"]: + for service in SERVICES: env_file = ctx.obj["manifests_path"] / service / ".env" if unset: @@ -433,7 +459,7 @@ def upgrade(ctx, branch): """Pull and restarts all running services""" ctx.forward(pull) - for service in ["creator-node", "discovery-provider"]: + for service in SERVICES: proc = subprocess.run( [ "docker", @@ -472,8 +498,8 @@ def upgrade(ctx, branch): @cli.command() -# random so nodes in the network stagger upgrades @click.option("--remove", is_flag=True) +# random so nodes in the network stagger upgrades @click.argument("cron-expression", default=f"{random.randint(0, 59)} * * * *") @click.pass_context def auto_upgrade(ctx, remove, cron_expression): diff --git a/identity-service/docker-compose.yml b/identity-service/docker-compose.yml new file mode 100644 index 000000000..1465bc901 --- /dev/null +++ b/identity-service/docker-compose.yml @@ -0,0 +1,61 @@ +version: "3.9" + +services: + db: + container_name: postgres + extends: + file: ../common-services.yml + service: base-db + environment: + POSTGRES_DB: audius_identity_service + volumes: + - /var/k8s/identity-service-db:/var/lib/postgresql/data # Use k8s location for consistency + networks: + - identity-service-network + + cache: + container_name: redis + extends: + file: ../common-services.yml + service: base-cache + networks: + - identity-service-network + + logspout: + extends: + file: ../common-services.yml + service: logspout + env_file: + - override.env + networks: + - identity-service-network + + backend: + container_name: server + image: audius/identity-service:${TAG:-23d350aabedfe7e4c3a4c3bd060c2f550f695068} + depends_on: + db: + condition: service_healthy + cache: + condition: service_healthy + labels: + autoheal: "true" + ports: + - "7000:7000" + env_file: + - ${NETWORK}.env + - override.env + networks: + - identity-service-network + + autoheal: + image: willfarrell/autoheal + container_name: autoheal + volumes: + - '/var/run/docker.sock:/var/run/docker.sock' + environment: + - AUTOHEAL_INTERVAL=10 + - CURL_TIMEOUT=30 + +networks: + identity-service-network: diff --git a/identity-service/prod.env b/identity-service/prod.env new file mode 100644 index 000000000..de1acd3fe --- /dev/null +++ b/identity-service/prod.env @@ -0,0 +1,37 @@ +dbUrl=postgres://postgres:postgres@db:5432/postgres + +redisHost=cache +redisPort=6379 + +aaoAddress=0x9811BA3eAB1F2Cd9A2dFeDB19e8c2a69729DC8b6 +aaoEndpoint=https://antiabuseoracle.audius.co +amplitudeAPIKey=86760558b8bb1b3aae61656efd4ddacb +blacklisterPublicKey=0xfeebEA99dE524ac668B6f151177EcA60b30A09c9 +cognitoBaseUrl=https://api.cognitohq.com +cognitoTemplateId=flwtmp_eMMe8VQGrKvLCX +ethBridgeAddress=0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B +ethOwnerWallet=0x3eC41B55D9A1Edd593Ef38493d8125DeB4EE03a9 +ethRegistryAddress=0xa0fd5C42F81CC35aa66E5f8Ee85098fF7D669fa6 +ethTokenAddress=0x2999e02829DC711B9254187962ba44d1fFcf5481 +ethTokenBridgeAddress=0x3ee18B2214AFF97000D974cf647E7C347E8fa585 +minimumBalance=25 +registryAddress=0x65D2F689a0ea3A5D1Ee97f7F8f3a9549860b9Ed5 +relayerPublicKey=0xdead88167Bd06Cbc251FB8336B44259c6407dd07 +rewardsParallelization=10 +rewardsQuorumSize=3 +secondaryWeb3Provider=https://core.poa.network +solBridgeAddress=worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth +solTokenBridgeAddress=wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb +solanaClaimableTokenProgramAddress=Ewkv3JahEFRKkcJmpoKB7pXbnUHwjAyXiwEo4ZY2rezQ +solanaMintAddress=9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM +solanaRewardsManagerProgramId=DDZDcYdQFEMwcu2Mwo75yGFjJ1mUQyyXLWzhZLEVFcei +solanaRewardsManagerProgramPDA=71hWFVYokLaN1PNYzTAWi13EfJ7Xt9VbSWUKsXUT8mxE +solanaRewardsManagerTokenPDA=3V9opXNpHmPPymKeq7CYD8wWMH8wzFXmqEkNdzfsZhYq +userVerifierPublicKey=0xbeef8E42e8B5964fDD2b7ca8efA0d9aef38AA996 +web3Provider=https://poa-gateway.audius.co +wormholeRPCHosts=https://wormhole-v2-mainnet-api.certus.one,https://wormhole.inotel.ro,https://wormhole-v2-mainnet-api.mcf.rocks,https://wormhole-v2-mainnet-api.chainlayer.network,https://wormhole-v2-mainnet-api.staking.fund,https://wormhole-v2-mainnet-api.chainlayer.network + +ethProviderUrl= +mailgunApiKey= +rateLimitingListensIPWhitelist= +twitterAPIKey= diff --git a/identity-service/stage.env b/identity-service/stage.env new file mode 100644 index 000000000..451278e1d --- /dev/null +++ b/identity-service/stage.env @@ -0,0 +1,22 @@ +dbUrl=postgres://postgres:postgres@db:5432/postgres + +redisHost=cache +redisPort=6379 + +aaoAddress=0x00b6462e955dA5841b6D9e1E2529B830F00f31Bf +aaoEndpoint=https://antiabuseoracle.staging.audius.co +amplitudeAPIKey=72a58ce4ad1f9bafcba0b92bedb6c33d +blacklisterPublicKey=0xcccc36bE44D106C6aC14199A2Ed6a29fDa25d5Ae +ethOwnerWallet=0xcccc7428648c4AdC0ae262D3547584dDAE25c465 +ethRegistryAddress=0xe39b1cA04fc06c416c4eaBd188Cb1330b8FED781 +ethTokenAddress=0x74f24429ec3708fc21381e017194A5711E93B751 +minimumBalance=10 +registryAddress=0x793373aBF96583d5eb71a15d86fFE732CD04D452 +relayerPublicKey=0x01083881956D45146CdB79b88ecB45C6dFbC5B8B +userVerifierPublicKey=0xbbbb93A6B3A1D6fDd27909729b95CCB0cc9002C0 +web3Provider=https://poa-gateway.staging.audius.co + +ethProviderUrl= +mailgunApiKey= +rateLimitingListensIPWhitelist= +twitterAPIKey=