Deployment Environment
Squash runs your deployments on virtual machines that are commissioned exclusively for you. Each deployment is created from scratch with a clean state.
Docker containers
Each Squash deployment has at least one Docker container (multiple containers if you are using docker-compose). Even if your application setup is based on a .squash.yml file (no Docker files) Squash still creates a Docker container behind the scenes.
SSH Access
Every Squash deployment has a SSH endpoint allowing you to debug complex issues and perform updates to your environment and application.
Once you connect to a Squash deployment you will encounter this screen:
For more information please go to Squash SSH access.
squash-docker-shell
You can quickly connect to containers used by your application by accessing the squash-docker-shell utility. After executing this command:
- Squash will automatically attach to a container, if there is only one container running in the host VM.
- Otherwise Squash will display a prompt like the one below, listing all available containers. Note that Squash assigns a unique incremental ID to each container (see the first column below). To connect to your desired container just type in the ID of the container you wish to connect to.
- By default Squash uses "bash" as the standard shell when connecting to containers. You may also pass a different shell name as follows:
squash-docker-shell <shell name>
- Example:
squash-docker-shell sh
- You may also connect to containers by using the container name as follows:
squash-docker-shell cname=<container_name>
- Example, using the first container listed below:
squash-docker-shell cname=code_web_1
- Please note that this is the container name (last column below), not to be confused with the container ID.
Once inside a container you have full access to install packages and customize your application environment as needed.
squash-storage-usage
This commands lists storage details directly from Docker, including the storage used by containers or any images. Use the following command to see the list of options: squash-storage-usage -h
squash-docker and squash-docker-compose
These are low level commands serving as replacements to the docker and docker-compose commands. They will accept most arguments from their counterpart commands. Most of the time you should use squash-docker-shell instead.
Examples:
$ squash-docker ps
$ squash-docker-compose logs
Please note that when calling these commands within a script you need to explicitly call them with "sudo". Example:
#!/bin/bash # tail removes the `first line that is only useful for debugging DOCKER_CONTAINER_ID="$(sudo squash-docker ps -qf 'name=website' | tail -n +2)"; sudo squash-docker exec -it "$DOCKER_CONTAINER_ID" python manage.py migrate
Docker and docker-compose restrictions
Please note that squash-docker-shell (and also squash-docker and squash-docker-compose) serves as a replacement for directly using the "docker" or "docker-compose" commands. Due to security reasons these commands are not allowed within the Squash host VMs.