This guide outlines the step-by-step process for deploying the slimtoolkit/slim project in a production environment. The deployment involves building the project using Go, managing dependencies, and creating a Docker container for easy deployment.

Prerequisites

Before proceeding, ensure that you have the following prerequisites installed:

  • Go environment set up
  • Docker installed
  • Access to a terminal

Step 1: Build the Project

Building the project is the first step in preparing for production deployment. The following commands utilize the provided Makefile to build the application.

# Navigate to the project root
cd /path/to/slimtoolkit/slim

# Run the build function from the Makefile
make build

This command will compile the project into a binary, leveraging the Golang module system. Ensure that you are not using the -mod=vendor option.

Step 2: Running Tests

It is essential to run tests before deploying to ensure that the application functions as expected. Use the following command to execute tests with the specified build constraints:

# Run tests with e2e build constraints
GO111MODULE=on go test -tags e2e ./...

This will run the end-to-end tests defined in the project.

Step 3: Dockerize the Application

To facilitate deployment, create a Docker image for the application using the provided Dockerfile. Here are the steps to build and run the Docker container:

Build the Docker Image

You can build the Docker image using the following command:

# Run the docker build command
docker build -t slimtoolkit/slim .

The Dockerfile defines the working directory and installs golangci-lint for linting, along with the necessary dependencies.

Run the Docker Container

Once the Docker image is built, run the container using:

# Run the Docker container
docker run -d -p 8080:8080 slimtoolkit/slim

This command runs the container in detached mode and maps port 8080 of the container to port 8080 on the host machine.

Step 4: Post Deployment

Once the application is running in the container, you may want to verify its health and performance. Utilize logging and monitoring tools to ensure that the application operates smoothly.

Monitor logs using:

# View logs for the running container
docker logs <container_id>

Replace <container_id> with the actual ID of your running container.

Additional Makefile Functions

The Makefile offers various functions that can assist in managing the deployment:

  • make clean: Cleans up any built files.
  • make fmt: Formats the codebase.
  • make tools: Installs necessary development tools.

Leverage these functions as needed to maintain a clean and efficient codebase.

Conclusion

This document outlines essential steps for deploying the slimtoolkit/slim project in a production environment. By following these steps and utilizing the provided code examples, expert developers should be able to successfully deploy and manage the application with confidence.

Sources:

  • Dockerfile
  • Makefile