Skip to content

Instantly share code, notes, and snippets.

@trentmurray
Last active March 16, 2020 06:43
Show Gist options
  • Save trentmurray/6819d99238be3804b4aaf2acbf2a46fd to your computer and use it in GitHub Desktop.
Save trentmurray/6819d99238be3804b4aaf2acbf2a46fd to your computer and use it in GitHub Desktop.
Project skeleton automation
#!/bin/zsh
# You should use lowercase, all one word project names
PROJECT=${1}
PROJECTS_DIR="${HOME}/projects"
# If your base projects directory doesn't exist, create it.
if [ ! -d ${PROJECTS_DIR} ]; then
echo "Creating ${PROJECTS_DIR}..."
mkdir -p ${PROJECTS_DIR}
fi
# Just set a variable to easily reference our current project
PROJECT_DIR=${PROJECTS_DIR}/${PROJECT}
# Start by creating the directory structure
echo "Creating the project ${PROJECT}"
mkdir -p ${PROJECT_DIR}/compose/nginx/conf.d
mkdir -p ${PROJECT_DIR}/compose/backend
mkdir -p ${PROJECT_DIR}/compose/frontend
# Create some empty docker files.
touch ${PROJECT_DIR}/compose/nginx/Dockerfile
touch ${PROJECT_DIR}/compose/backend/Dockerfile
touch ${PROJECT_DIR}/compose/frontend/Dockerfile
# Create our docker compose files.
touch ${PROJECT_DIR}/docker-compose.local.yml
touch ${PROJECT_DIR}/docker-compose.production.yml
# Create some docker-compose aliases
echo "alias ${PROJECT}_localenv='\$(docker-machine env ${PROJECT}local)'" >> ~/.zshrc
echo "alias dcl${PROJECT}='${PROJECT}_localenv && docker-compose -f ${PROJECT_DIR}/docker-compose.local.yml'" >> ~/.zshrc
echo "Created alias 'dcl${PROJECT}' for docker-compose commands on the local configuration"
echo "alias ${PROJECT}_prodenv='\$(docker-machine env ${PROJECT}prod)'" >> ~/.zshrc
echo "alias dcp${PROJECT}='${PROJECT}_prodenv && docker-compose -f ${PROJECT_DIR}/docker-compose.production.yml'" >> ~/.zshrc
echo "Created alias 'dcp${PROJECT}' for docker-compose commands on the production configuration"
touch ${PROJECT_DIR}/.gitignore
echo ".local.env" >> ${PROJECT_DIR}/.gitignore
echo ".prod.env" >> ${PROJECT_DIR}/.gitignore
touch ${PROJECT_DIR}/.local.env
touch ${PROJECT_DIR}/.prod.env
echo "Created env files for the application"
cd ${PROJECT_DIR} && git init
echo "Project skeleton created"
echo "Docker machines:"
echo ">> Creating Production machine"
docker-machine create --driver=virtualbox ${1}prod
echo ">> Creating local machine"
docker-machine create --driver=virtualbox ${1}local
echo "Script done!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment