How to deploy springboot to ECS using CodeBuild and CodePipeline ?

Step 1:
Create a Docker file inside JAVA Springboot project and add this content
| #Use the official OpenJDK 17 image from Docker Hub FROM openjdk:17 #Set working directory inside the container WORKDIR /app #Copy the compiled Java application JAR file into the container COPY ./target/course-service.jar /app #Expose the port the Spring Boot application will run on EXPOSE 8080 #Command to run the application CMD [“java”, “-jar”, “course-service.jar”] |
Step 2:
Create Elastic Content Registry at AWS Console.
- Got o ECR Registry at AWS Console
- Create repository
- Write a name for the repository. For an example, “java-registry”
Now we can see the created registry called “java-registry”
Step 3:
Need to create a buildspec.yaml file inside the project. This buildspec.yaml file will create the docker image and then push the image to the hub. Now need to define command for the buildspec.yaml file.
| version: 0.2 phases: pre_build: commands: – mvn clean install – echo Logging in to Amazon ECR… – aws –version – REPOSITORY_URI=339713037827.dkr.ecr.ap-south-1.amazonaws.com/javatechie-registry – aws ecr get-login-password –region ap-south-1 | docker login –username AWS –password-stdin $REPOSITORY_URI – COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) – IMAGE_TAG=build-$(echo $CODEBUILD_BUILD_ID | awk -F”:” ‘{print $2}’) build: commands: – echo Build started on date– echo Building the Docker image… – docker build -t $REPOSITORY_URI:latest . – docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG post_build: commands: – echo Build completed on date– echo Pushing the Docker images… – docker push $REPOSITORY_URI:latest – docker push $REPOSITORY_URI:$IMAGE_TAG – echo Writing image definitions file… – printf ‘[{“name”:”course-service”,”imageUri”:”%s”}]’ $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json – echo Writing image definitions file… # add your container name – DOCKER_CONTAINER_NAME=java-registry – printf ‘[{“name”:”%s”,”imageUri”:”%s”}]’ $DOCKER_CONTAINER_NAME $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json – echo $DOCKER_CONTAINER_NAME – echo printing imagedefinitions.json – cat imagedefinitions.json artifacts: files: – imagedefinitions.json – target/course-service.jar |
Step 4:
Now task for the AWS code build. Go to the code build at aws console.
- Create project
- Project name can be “course-project”
- Select a source provider from Source 1 primary. For an example, select GitHub from dropdown because our project is in at GitHub repository.
Leave a comment