Introduction

Docker plays a significant role in the development environment by enabling containerization of applications, which streamlines the development and testing processes. This document outlines detailed steps on how to configure and utilize Docker within the development setting for the fluxcd/flux2-kustomize-helm-example.

Prerequisites

Ensure you have the following installed before proceeding:

  • Docker
  • Git
  • Access to the fluxcd/flux2-kustomize-helm-example repository

Step 1: Clone the Repository

Clone the fluxcd/flux2-kustomize-helm-example repository to your local machine:

git clone https://github.com/${GITHUB_USER}/${GITHUB_REPO}.git
cd ${GITHUB_REPO}

Step 2: Configure Docker Image for Development

You need to create or modify a Dockerfile in your application directory to specify how the application will be built and run. You can create a Dockerfile if it doesn’t already exist:

# Dockerfile
FROM node:14

# Set the working directory
WORKDIR /usr/src/app

# Copy package.json and package-lock.json
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy source files
COPY . .

# Expose the application port
EXPOSE 3000

# Command to run the application
CMD ["npm", "start"]

This example Dockerfile sets up a Node.js application. Adjust the base image and commands according to your application stack.

Step 3: Build the Docker Image

With your Dockerfile set up, build the Docker image for your development environment:

docker build -t my-application:dev .

In this command, my-application:dev is the name and tag for the Docker image.

Step 4: Run the Docker Container

After building the image, you can run a new container from it. Use the following command to start your application in a container:

docker run -p 3000:3000 --name my-application-container my-application:dev

Here, -p 3000:3000 maps port 3000 of the host to port 3000 of the container. Change the ports according to your application’s requirements.

Step 5: Test the Application

Once the container is running, you can test if your application is working correctly by accessing it in your web browser or using a tool like curl:

curl http://localhost:3000

Step 6: Manage Docker Containers

You can stop, start, or remove the running container as needed. Use the commands below to manage your Docker containers:

To stop the container:

docker stop my-application-container

To start the container again:

docker start my-application-container

To remove the container:

docker rm my-application-container

Step 7: Automate with Docker Compose (Optional)

If your project has multiple services, consider using Docker Compose to simplify the orchestration. Create a docker-compose.yml file:

version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"

Run the following command to start all services defined in your docker-compose.yml:

docker-compose up

Conclusion

Docker simplifies development workflows by providing a consistent environment for code development. The steps outlined above help developers configure, build, and run Docker containers within the context of the fluxcd/flux2-kustomize-helm-example project, ensuring that applications are tested seamlessly before deployment in production settings.