Last active
March 16, 2020 06:43
-
-
Save trentmurray/6819d99238be3804b4aaf2acbf2a46fd to your computer and use it in GitHub Desktop.
Project skeleton automation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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