Canvas LMS
Install Canvas via Docker
Pull Canvas Docker
Canvas LMS has a release on Docker Hub here. But it might be outdated already.
$ sudo docker pull instructure/canvas-lms:stable
Install via Dockerfile
version: '3.8'
services:
canvas:
image: instructure/canvas-lms:latest
container_name: canvas-lms
restart: always
environment:
RAILS_ENV: production
POSTGRES_HOST: canvas-postgres
POSTGRES_USER: canvas
POSTGRES_PASSWORD: <DB_PASSWORD>
POSTGRES_DB: canvas_production
REDIS_HOST: canvas-redis
REDIS_PORT: 6379
DOMAIN_NAME: localhost
CANVAS_LMS_ADMIN_EMAIL: admin@example.com
CANVAS_LMS_ADMIN_PASSWORD: adminpassword
ports:
- "80:3000"
depends_on:
- canvas-postgres
- canvas-redis
canvas-postgres:
image: postgres:16
container_name: canvas-postgres
restart: always
environment:
POSTGRES_USER: canvas
POSTGRES_PASSWORD: canvaspassword
POSTGRES_DB: canvas_production
volumes:
- canvas_db_data:/var/lib/postgresql/data
canvas-redis:
image: redis:latest
container_name: canvas-redis
restart: always
volumes:
canvas_db_data:
Start Canvas LMS
- Run the following command to start all containers:
$ docker-compose up -d
- Run Database Migrations
After starting the containers, you need to run database migrations:
$ docker exec -it canvas-lms bash
Then, inside the container:
$ bundle exec rake db:initial_setup
Dependencies with Docker
PostgreSQL Database
$ sudo docker pull postgres:16
$ sudo docker run -d --name canvas-postgres \
-e POSTGRES_USER=canvas -e POSTGRES_PASSWORD=<DB_PASSWORD> \
-e POSTGRES_DB=canvas_production -p 5432:5432 postgres:16
You can run this following command to check PostgreSQL database status:
$ sudo docker logs canvas-postgres
Access PostgreSQL in Docker
If you want to manually check the database inside the container, run:
$ sudo docker exec -it canvas-postgres psql -U canvas -d canvas_production
Set Up Redis
$ sudo docker run -d --name canvas-redis -p 6379:6379 redis:latest
Ensure the Container is Running:
$ docker ps
Install Canvas inside a Docker
Pull Docker Image
$ docker pull ubuntu:22.04
$ apt install sudo -y
PostgreSQL Database
$ apt update
$ apt install postgresql postgresql-contrib libpq-dev
$ service postgresql start # Can not use systemctl
$ su - postgres
$ createuser $USER --no-createdb --no-superuser --no-createrole --pwprompt
Git
$ apt install git
Apache 2 & Passenger
$ apt install -y dirmngr gnupg apt-transport-https ca-certificates curl -y
$ curl https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key.txt \
| gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/phusion.gpg >/dev/null
$ sudo sh -c \
'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger $(lsb_release -cs) \
main > /etc/apt/sources.list.d/passenger.list'
$ sudo apt update
$ sudo apt install passenger libapache2-mod-passenger apache2
$ sudo service apache2 start # must use sudo
Redis
$ sudo nano /etc/redis/redis.conf
Change to systemd
$ sudo redis-server /etc/redis/redis.conf --daemonize yes