> ## Content Index
> Fetch the complete content index at: https://devopscube.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Running Shell Scripts In Docker With Arguments
- URL: https://devopscube.com/run-scripts-docker-arguments/
- Published: 2023-08-06T07:31:00.000Z
- Updated: 2025-03-15T05:26:23.000Z
- Author: devopscube
- Tags: DEVOPS, DOCKER, HOW TO GUIDES, #Migrated-1741795015845, #wp, #wp-post, #Import 2025-03-12 15:57, #blog

**Use Case:**  You need to run a custom shell script as an entrypoint on your [Docker container](https://devopscube.com/what-is-docker/) with arguments passed to the script. These arguments decide how the script runs inside the container.

We will look into running custom shell scripts inside a Docker container with command line arguments in this guide.

## **Dockerfile - Run Shell Script**

In this example, we have a custom [shell script](https://devopscube.com/recommends/kk-shell-scripting/) that accepts three command-line arguments ($1, $2 & $3).

The `while true` loop then runs indefinitely, printing the values of `arg1`, `arg2`, and `arg3` in each iteration with a one-second delay between each iteration.

**Step 1:** Create a **`script.sh`** file and copy the following contents.

```
#!/bin/bash
arg1=${1}
arg2=${2}
arg3=${3}
# Run the script in an infinite loop
while true; do
    echo "Argument 1: $arg1"
    echo "Argument 2: $arg2"
    echo "Argument 3: $arg3"
    sleep 1
done
```

**Step 2:** You should have the `script.sh` is the same folder where you have the **Dockerfile**.

Create the Dockerfile with the following contents.

```
FROM ubuntu:latest
LABEL maintainer="Your Name <contact@techiescamp.com>"
RUN apt-get update && apt-get install -y \
    && rm -rf /var/lib/apt/lists/*
# Copy the script to the container
COPY ./script.sh /
RUN chmod +x /script.sh
# Set the entrypoint to the script with CMD arguments
ENTRYPOINT ["/script.sh"]
CMD ["hulk", "batman", "superman"]
```

Here the **entrypoint** of the container is set to `/script.sh`, which means that this script will be run whenever the container is started.

The `CMD` line specifies default arguments for the script if none are provided when the container is started. In this case, the default arguments are `hulk`, `batman`, and `superman`.

**Step 3:** Let's [build a docker image](https://devopscube.com/build-docker-image/) from this **Dockerfile** with the name script-demo.

```
docker build -t script-demo .
```

**Step 4:** Now let's create a container named demo using script-demo image.

```
docker run --name demo -d script-demo
```

You can check the container logs using the following command.

```
docker logs demo -f
```

**Step 4:** You can also pass the CMD arguments at the end of the docker run command. It will override the arguments passed in the Dockerfile. For example,

```
docker run --name demo -d script-demo batman spiderman hulk
```

Here `"batman spiderman hulk"` will override `"hulk", "batman", "superman"` present in the docker image

> **Note**: If you don't want to pass arguments to the shell script, you can ignore the CMD arguments and execute the shell script directly using Entrypoint.