Prerequisites
Before we begin, ensure you have:
- A GitHub account and a repository for your web content.
- Jenkins installed and running.
- Docker installed on your Jenkins server.
- Basic knowledge of Docker and Jenkins.
Step 1: Prepare Your Web Content
1. Create Your Web Content:
- On your local machine, create a directory for your web content.
- Inside this directory, create an `index.html` file or any additional files you want to serve.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Custom Web Page</title>
</head>
<body>
<h1>Welcome to My Custom Web Page!</h1>
<p>This is served from a Docker container.</p>
</body>
</html>
2. Push Your Web Content to GitHub:
- Create a new GitHub repository and push your web content to it.
Step 2: Create a Dockerfile
1. Create a Dockerfile:
- In the same directory as your web content, create a `Dockerfile` to build your custom HTTPD image.
# Use the official HTTPD image
FROM httpd:2.4
# Copy the web content into the container
COPY ./ /usr/local/apache2/htdocs/
2. Test the Docker Image Locally (Optional):
- You can build and test the image locally to ensure it works as expected. Run the following commands:
docker build -t my-custom-httpd .
docker run -d -p 8080:80 my-custom-httpd
- Access it in your browser at `http://localhost:8080`.
Step 3: Set Up Jenkins Freestyle Project
Step 3.1: Create a New Jenkins Job
1. Open Jenkins:
- Navigate to your Jenkins dashboard.
2. Create a New Freestyle Project:
- Click on New Item, enter a name for your job, select **Freestyle project**, and click **OK**.
Step 3.2: Configure Source Code Management
1. Source Code Management:
- Under the Source Code Management section, select Git.
- Enter your GitHub repository URL and any necessary credentials.
Step 3.3: Configure Build Triggers
1. Build Triggers:
- Check the box for GitHub hook trigger for GITScm polling. This will enable Jenkins to trigger a build when changes are pushed to the repository.
Step 3.4: Configure Build Steps
1. Build Steps:
- In the Build section, click Add build step and select Execute shell.
2. Shell Command:
- Enter the following commands to build and run your Docker container:
# Build the Docker image
docker build -t my-custom-httpd .
# Stop any running container with the same name
docker stop my-custom-httpd || true
# Remove the container if it exists
docker rm my-custom-httpd || true
# Run the Docker container
docker run -d --name my-custom-httpd -p 8080:80 my-custom-httpd
Step 3.5: Save Configuration
1. Save:
- Click Save to save your job configuration.
Step 4: Set Up GitHub Webhook
1. Go to Your GitHub Repository:
- Click on the Settings tab of your repository.
2. Webhooks:
- Click on Webhooks in the left sidebar and then on Add webhook.
3. Payload URL:
- Enter your Jenkins URL followed by `/github-webhook/`.
- Example: `http://your-jenkins-url/github-webhook/`.
4.Content Type:
- Set to `application/json`.
5. Which events would you like to trigger this webhook?:
- Select Just the push event.
6. Create Webhook:
- Click Add webhook.
Step 5: Test the Setup
1. Make Changes to Your Web Content:
- Update your web content in the GitHub repository.
2. Push Changes:
- Push the changes to GitHub.
3. Check Jenkins:
- Go to your Jenkins job page. You should see a new build triggered by the push.
4. Verify Deployment:
- After the build is successful, access your web application at `http://<your-jenkins-url>:8080`.
Conclusion
Congratulations! You’ve set up a Jenkins Freestyle project to build and deploy a custom HTTPD Docker image containing your own web content. With GitHub webhooks in place, any changes you make to your repository will automatically trigger a new build and deployment.
This automated setup not only streamlines your development workflow but also ensures that your updates are quickly reflected in your web application. Happy coding!
Comments
Post a Comment