Commit 14246b

2025-07-06 21:26:59 Tebby Dog: Init
/dev/null .. 2-code/docker-shortcuts.md
@@ 0,0 1,160 @@
+ # Docker-Shortcuts
+
+ # Description
+
+ This script automates the process of building and pushing a Docker image to DockerHub, while incrementally tracking the version number. It uses the directory name as the default local image name, but allows for customization through command-line arguments.
+
+ The script builds the Docker image with a version tag in the format `MM.DD.YY.<counter>`, where `<counter>` is an incremental value stored in a file. The image is then tagged with additional tags on DockerHub (`latest` and `tebwritescode/<image_name>:<date>.<counter>`).
+
+ # Usage**
+
+ To use this script, save it to a file (e.g., `build_and_push_docker_image.sh`) and make it executable by running `chmod +x build_and_push_docker_image.sh`.
+
+ You can run the script in three different modes:
+
+ 1. **No arguments**: The script will use the directory name as both the local image name and Docker image name.
+ ```bash
+ dcp
+ ```
+ 2. **One argument**: The script will use the parent directory name for the local image name, but allow you to specify a custom Docker image name using the first command-line argument.
+ ```bash
+ dcp <DOCKER_IMAGE_NAME>
+ ```
+ 3. **Two arguments**: You can specify both the local image name and the Docker image name as separate command-line arguments.
+ ```bash
+ dcp <LOCAL_IMAGE_NAME> <DOCKER_IMAGE_NAME>
+ ```
+
+ # Example Output
+
+ When you run the script, it will output something like this:
+ ```
+ Docker image built with tag: myimage:02.14.21.1
+ Docker image tagged: tebwritescode/myimage:02.14.21.1
+ Docker image tagged: tebwritescode/myimage:latest
+ Docker image pushed: tebwritescode/myimage:02.14.21.1
+ Docker image pushed: tebwritescode/myimage:latest
+
+ Local Image Name: myimage
+ Docker Image Name: myimage
+ ```
+ Note that the exact output may vary depending on your directory name and DockerHub credentials.
+
+ # Assumptions
+
+ This script assumes you have Docker installed on your system, as well as the `docker` command in your PATH. Additionally, it requires a valid DockerHub account with access to the repository where you want to push your image.
+
+ # Downloading the Script
+
+ Create folders
+ mkdir /opt/dcp
+ mkdir /opt/dcp/counters
+
+ You can download this script by running:
+ ```bash
+ curl -sSO https://github.com/tebwritescode/dcp/blob/14d5d8d8126f94e9867152339f1ee644ee9e1c1e/dcp.sh > /opt/dcp/dcp.sh && chmod +x /opt/dcp/dcp.sh
+ ```
+
+ Or copy-pasta
+
+ ```bash
+ #!/bin/bash
+
+ # Check how many arguments were passed
+ if [ $# -eq 0 ]; then
+ # No arguments passed
+ IMAGE_NAME=$(basename "$PWD")
+ DOCKER_IMAGE_NAME=$(basename "$PWD")
+ elif [ $# -eq 1 ]; then
+ # One argument passed
+ IMAGE_NAME=$(basename "$PWD")
+ DOCKER_IMAGE_NAME=$1
+ elif [ $# -eq 2 ]; then
+ # Two arguments passed
+ IMAGE_NAME=$1
+ DOCKER_IMAGE_NAME=$2
+ else
+ echo "Error: Too many arguments passed."
+ echo "Usage: $0 - Use parent directory name for both local and docker image name."
+ echo "$0 <DOCKER_IMAGE_NAME> - Use parent directory name for local image name and use <DOCKER_IMAGE_NAME> as docker image name/"
+ echo "$0 <IMAGE_NAME> <DOCKER_IMAGE_NAME> - Use <IMAGE_NAME> for local image name and use <DOCKER_IMAGE_NAME> as docker image name/"
+ exit 1
+ fi
+
+ # Get today's date in the format MM.DD.YY
+ DATE=$(date +"%m.%d.%y")
+
+ # Define the file where the counter will be stored
+ COUNTER_FILE="/opt/dcp/counters/build_counter_${DOCKER_IMAGE_NAME}_${DATE}.txt"
+
+ # Check if the counter file exists, if not, create it and set the counter to 0
+ if [ ! -f "$COUNTER_FILE" ]; then
+ rm -fv build_counter_${DOCKER_IMAGE_NAME}_*.txt
+ echo "0" > "$COUNTER_FILE"
+ fi
+
+ # Read the current counter value
+ COUNTER=$(cat "$COUNTER_FILE")
+
+ # Increment the counter by 1
+ NEW_COUNTER=$((COUNTER + 1))
+
+ # Update the counter in the file
+ echo "$NEW_COUNTER" > "$COUNTER_FILE"
+
+ # Build the Docker image with the version tag in the format MM.DD.YY.<counter>
+ if ! /usr/bin/docker build -t "$IMAGE_NAME":"$DATE"."$NEW_COUNTER" .; then
+ echo "Docker build failed."
+ exit 1
+ fi
+
+ # Print the image tag for reference
+ echo "Docker image built with tag: $IMAGE_NAME:$DATE.$NEW_COUNTER"
+
+ # Tag the image for DockerHub
+ /usr/bin/docker tag "$IMAGE_NAME:$DATE.$NEW_COUNTER" tebwritescode/"$DOCKER_IMAGE_NAME:$DATE.$NEW_COUNTER"
+ /usr/bin/docker tag "$IMAGE_NAME:$DATE.$NEW_COUNTER" tebwritescode/"$DOCKER_IMAGE_NAME:latest"
+
+ # Print the image tag for reference
+ echo "Docker image tagged: tebwritescode/$DOCKER_IMAGE_NAME:$DATE.$NEW_COUNTER"
+ echo "Docker image tagged: tebwritescode/$DOCKER_IMAGE_NAME:latest"
+
+ # Push the Docker image to DockerHub
+ if ! /usr/bin/docker push tebwritescode/"$DOCKER_IMAGE_NAME:$DATE.$NEW_COUNTER"; then
+ echo "Docker push failed for $NEW_COUNTER."
+ exit 1
+ fi
+
+ if ! /usr/bin/docker push tebwritescode/"$DOCKER_IMAGE_NAME:latest"; then
+ echo "Docker push failed for 'latest'."
+ exit 1
+ fi
+
+ # Output the assigned values (optional)
+ echo "Local Image Name: $IMAGE_NAME"
+ echo "Docker Image Name: $DOCKER_IMAGE_NAME"
+
+ # Print the image push for reference
+ echo "Docker image pushed: tebwritescode/$DOCKER_IMAGE_NAME:$DATE.$NEW_COUNTER"
+ echo "Docker image pushed: tebwritescode/$DOCKER_IMAGE_NAME:latest"
+ ```
+
+ # Setting up an Alias
+
+ To make it easier to use this script, you can set up an alias by adding the following line to your shell configuration file (e.g., `~/.bashrc` or `~/.zshrc`):
+ ```bash
+ alias dcp='/opt/dcp/dcp.sh'
+ ```
+ Once you've added this alias, you can simply run `dcp` instead of typing out the full script name.
+
+ # Using the Alias
+
+ To use the `dcp` alias, simply type:
+ ```bash
+ dcp [optional arguments]
+ ```
+ For example:
+ ```bash
+ dcp myimage latest
+ ```
+ This will build and push a Docker image with the tag `tebwritescode/myimage:latest`.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9