in src/main/java/jetbrains/teamcity/aws/template/services/ecs/AwsTeamCityTemplateEcs.java [41:81]
public AwsTeamCityTemplateEcs(@NotNull final Construct scope, @NotNull final Vpc vpc, @NotNull final AwsTeamCityTemplateEfs teamcityTemplateEfs) {
Cluster cluster = Cluster.Builder.create(scope, "Cluster")
.vpc(vpc)// creates Fargate ECS by default
.build();
//TeamCity server ALB balanced service
myApplicationLoadBalancedFargateService = ApplicationLoadBalancedFargateService.Builder.create(scope, "Service")
.cluster(cluster)
.memoryLimitMiB(10240)
.cpu(2048)
.publicLoadBalancer(true)
.taskImageOptions(ApplicationLoadBalancedTaskImageOptions.builder()
.family("TeamCityServer")
.containerName("TeamCity")
.image(ContainerImage.fromRegistry("jetbrains/teamcity-server"))
.entryPoint(Arrays.asList("/bin/sh", "-c"))
.command(Collections.singletonList(startServerWithAgentCommand))
.environment(Collections.singletonMap("TEAMCITY_HTTPS_PROXY_ENABLED", "true"))
.containerPort(8111)
.build())
.build();
assert myApplicationLoadBalancedFargateService.getTaskDefinition().getDefaultContainer() != null;
//add mount points to the TC container
myApplicationLoadBalancedFargateService.getTaskDefinition().getDefaultContainer().addMountPoints(teamcityTemplateEfs.getDataDirMountPoint(), teamcityTemplateEfs.getLogsDirMountPoint());
myApplicationLoadBalancedFargateService.getTaskDefinition().addVolume(teamcityTemplateEfs.getDataDirVolume());
myApplicationLoadBalancedFargateService.getTaskDefinition().addVolume(teamcityTemplateEfs.getLogsDirVolume());
teamcityTemplateEfs.getEfs().getConnections().allowDefaultPortFrom(myApplicationLoadBalancedFargateService.getService().getConnections());
teamcityTemplateEfs.getEfs().grant(myApplicationLoadBalancedFargateService.getTaskDefinition().getTaskRole(), "elasticfilesystem:ClientMount", "elasticfilesystem:ClientWrite");
myApplicationLoadBalancedFargateService.getTargetGroup().configureHealthCheck(HealthCheck.builder()
.path("/mnt/get/stateRevision")
.build());
addCustomHttpHeaderRequirement(scope);
}