Create php repository and want to quickly develop and test it everywhere? Add a fanzy start_docker_container.sh shell script to it!
I have to maintain a big bunch of repositories with different languages and different language versions.
After some iterations, I came up with a simple idea by using docker for it. To ease up things for any kind of users who have to deal with this code (even qa), the last iteration is to add a "startdockercontainer.sh" script into the repository.
Following an example script for a php repository.
Given is, that the script is located in <project_root>/bin
.
Given is, that the docker file exists in <project_root>/data/docker
.
#!/bin/bash
####
# Starts a fitting container and creates image if needed.
#
# @todo
####
# @author stev leibelt <artodeto@bazzline.net>
# @since 2018-05-09
####
PATH_OF_THIS_SCRIPT=$(cd $(dirname "$0"); pwd)
DOCKER_IMAGE_NAME='my_php_application'
DOCKER_IMAGE_TAG='0.1.0'
if ! (docker image ls | grep -q "${DOCKER_IMAGE_NAME}\s\+${DOCKER_IMAGE_TAG}")
then
PATH_TO_THE_DOCKER_SOURCE=$(realpath ${PATH_OF_THIS_SCRIPT}/../data/docker)
echo ":: We have to build the docker container first."
echo ":: Please do the following steps first."
#this is usefull since you have to copy some ssh keys to a path
# or configure some files.
read -p ":: Hit <ENTER> to continue."
docker build -t ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} ${PATH_TO_THE_DOCKER_SOURCE}
fi
docker container run --mount type=bind,source="${PATH_OF_THIS_SCRIPT}"/..,target=/application -it ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} /bin/ash
And thats it. If the image is not found on the host, we have to setup things and build the image.
Afterwards we start the container and mount the repository code into /application
of the container.