With the intention to deploy a Java software into AWS ECS (Elastic Container Service) utilizing Terraform, we have to take into account a number of various things.
Step 1 – Java Utility
Create a file known as HelloWorld.java
and add the next code to it:
public class HelloWorld {
public static void essential(String[] args) {
System.out.println("Whats up, World!");
}
}
We now have to construct our class as follows:
javac HelloWorld.java
As soon as that is completed, we are able to package deal our software right into a jar
file:
jar cvf my-app.jar HelloWorld.class
Step 2 – Dockerfile
Subsequent create a file known as Dockerfile
and replica the next code into it:
FROM openjdk:11-jre-slim
WORKDIR /app
COPY goal/my-app.jar /app
CMD ["java", "-jar", "my-app.jar"]
Observe 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 are able to both create totally different Terraform recordsdata, however on this instance, we’ll merely create a single file known as essential.tf
.
On this file, we’ll first create an ECS job 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 – Operating the Terraform
Now we have to run the Terraform code, which we are able to do from the terminal as follows:
terraform init
terraform apply