Home > database >  nginx-alpine: how to view its docker file
nginx-alpine: how to view its docker file

Time:02-04

I have the following image: nginx:1.19.0-alpine

I want to know about its docker file. I checked https://github.com/nginxinc/docker-nginx but could not understand how to check

Basically i want to change the /docker-entrypoint.sh

Currently its

#!/usr/bin/env sh
# vim:sw=4:ts=4:et

set -e

if [ "$1" = "nginx" -o "$1" = "nginx-debug" ]; then
    if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -maxdepth 1 -type f -print -quit 2>/dev/null | read v; then
        echo "$0: /docker-entrypoint.d/ is not empty, will attempt to perform configuration"

        echo "$0: Looking for shell scripts in /docker-entrypoint.d/"
        find "/docker-entrypoint.d/" -follow -type f -print | sort -n | while read -r f; do
            case "$f" in
                *.sh)
                    if [ -x "$f" ]; then
                        echo "$0: Launching $f";
                        "$f"
                    else
                        # warn on shell scripts without exec bit
                        echo "$0: Ignoring $f, not executable";
                    fi
                    ;;
                *) echo "$0: Ignoring $f";;
            esac
        done

        echo "$0: Configuration complete; ready for start up"
    else
        echo "$0: No files found in /docker-entrypoint.d/, skipping configuration"
    fi
fi

# Handle enabling SSL
if [ "$ENABLE_SSL" = "True" ]; then
  echo "Enabling SSL support!"
  cp /etc/nginx/configs/default_ssl.conf /etc/nginx/conf.d/default.conf
fi


exec "$@"

I want it to modify it as

#!/usr/bin/env sh
# vim:sw=4:ts=4:et

set -x -o verbose;

echo $1

if [ "$1" = "nginx" -o "$1" = "nginx-debug" ]; then
    if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -maxdepth 1 -type f -print -quit 2>/dev/null | read v; then
        echo "$0: /docker-entrypoint.d/ is not empty, will attempt to perform configuration"

        echo "$0: Looking for shell scripts in /docker-entrypoint.d/"
        find "/docker-entrypoint.d/" -follow -type f -print | sort -n | while read -r f; do
            case "$f" in
                *.sh)
                    if [ -x "$f" ]; then
                        echo "$0: Launching $f";
                        "$f"
                    else
                        # warn on shell scripts without exec bit
                        echo "$0: Ignoring $f, not executable";
                    fi
                    ;;
                *) echo "$0: Ignoring $f";;
            esac
        done

        echo "$0: Configuration complete; ready for start up"
    else
        echo "$0: No files found in /docker-entrypoint.d/, skipping configuration"
    fi
fi

# Handle enabling SSL
if [ "$ENABLE_SSL" = "True" ]; then
  echo "Enabling SSL support!"
  cp /etc/nginx/configs/default_ssl.conf /etc/nginx/conf.d/default.conf
fi

exec "$@"

I see $1 is being passed. But no clue what to pass

CodePudding user response:

Normally, the CMD from the Dockerfile is sent as parameters to the ENTRYPOINT. In the generated Dockerfile (found here for current alpine: https://github.com/nginxinc/docker-nginx/blob/master/stable/alpine/Dockerfile), you can see that the CMD is CMD ["nginx", "-g", "daemon off;"]. So in normal use, the parameters for the entrypoint script are "nginx", "-g" and "daemon off;".

Since the first parameter is "nginx", the script will enter the if block and run the code in there.

The if is there in case you want to run a different command. For instance if you want to enter the shell and look around in the image, you could do docker run -it nginx:alpine /bin/sh. Now the parameter for the entrypoint.sh script is just "/bin/sh" and now the script won't enter the if-block.

If you want to build your own, modified version of the image, you can fork https://github.com/nginxinc/docker-nginx/ and build from your own version of the repo.

If you need the 1.19 version of the Dockerfile, you'll have to look through the old versions on the repo. The 1.19.0 version is here: https://github.com/nginxinc/docker-nginx/blob/1.19.0/stable/alpine/Dockerfile

  •  Tags:  
  • Related