To be able to deploy a Java software into AWS ECS (Elastic Container Service) utilizing Terraform, we have to take into account just a few various things.
Step 1 – Java Software
Create a file referred to as HelloWorld.java
and add the next code to it:
public class HelloWorld {
public static void predominant(String[] args) {
System.out.println("Hi there, World!");
}
}
We now must construct our class as follows:
javac HelloWorld.java
As soon as that is finished, we will bundle our software right into a jar
file:
jar cvf my-app.jar HelloWorld.class
Step 2 – Dockerfile
Subsequent create a file referred to as Dockerfile
and duplicate the next code into it:
FROM openjdk:11-jre-slim
WORKDIR /app
COPY goal/my-app.jar /app
CMD ["java", "-jar", "my-app.jar"]
Word that goal/my-app.jar
on this code is the relative path from the Dockerfile
to the my-app.jar
that we packaged in step 1 above.
Step 3 – Terraform
Subsequent we’ll concentrate on the Terraform. To do that, we will both create totally different Terraform information, however on this instance, we’ll merely create a single file referred to as predominant.tf
.
On this file, we’ll first create an ECS process definition:
useful resource "aws_ecs_task_definition" "my_task_definition" {
household = "my-task-definition"
container_definitions = jsonencode([
{
name = "my-container"
image = "my-docker-image"
cpu = 256
memory = 512
portMappings = [
{
containerPort = 8080
hostPort = 8080
}
]
}
])
}
Adopted by an ECS service:
useful resource "aws_ecs_service" "my_service" {
identify = "my-service"
cluster = aws_ecs_cluster.my_cluster.id
task_definition = aws_ecs_task_definition.my_task_definition.arn
desired_count = 1
network_configuration {
subnets = [aws_subnet.my_subnet.id]
security_groups = [aws_security_group.my_security_group.id]
assign_public_ip = true
}
}
Step 4 – Working the Terraform
Now we have to run the Terraform code, which we will do from the terminal as follows:
terraform init
terraform apply