diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index 68b77c90..7dd096d5 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -28,7 +28,7 @@ services: db: condition: service_healthy frontend: - image: node:14 + image: node:20 volumes: - ${PWD}/frontend:/home/mediacms.io/mediacms/frontend/ working_dir: /home/mediacms.io/mediacms/frontend/ diff --git a/docker-compose/docker-compose-dev-updated.yaml b/docker-compose/docker-compose-dev-updated.yaml new file mode 100644 index 00000000..5bac9c06 --- /dev/null +++ b/docker-compose/docker-compose-dev-updated.yaml @@ -0,0 +1,144 @@ +services: + migrations: + platform: linux/amd64 + build: + context: . + dockerfile: ./Dockerfile + args: + - DEVELOPMENT_MODE=True + image: mediacms/mediacms:latest + volumes: + - ./:/home/mediacms.io/mediacms/ + command: "./deploy/docker/prestart.sh" + environment: + DEVELOPMENT_MODE: True + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_CELERY_BEAT: 'no' + ADMIN_USER: 'admin' + ADMIN_EMAIL: 'admin@localhost' + ADMIN_PASSWORD: 'admin' + restart: on-failure + depends_on: + redis: + condition: service_healthy + db: + condition: service_healthy + frontend: + image: node:20 + user: "root" + volumes: + - ${PWD}/frontend:/home/mediacms.io/mediacms/frontend/ + - frontend_node_modules:/home/mediacms.io/mediacms/frontend/node_modules + - player_node_modules:/home/mediacms.io/mediacms/frontend/packages/player/node_modules + - scripts_node_modules:/home/mediacms.io/mediacms/frontend/packages/scripts/node_modules + - npm_global:/home/node/.npm-global + working_dir: /home/mediacms.io/mediacms/frontend/ + command: > + bash -c " + echo 'Setting up npm global directory...' && + mkdir -p /home/node/.npm-global && + chown -R node:node /home/node/.npm-global && + echo 'Setting up permissions...' && + chown -R node:node /home/mediacms.io/mediacms/frontend && + echo 'Cleaning up node_modules...' && + find /home/mediacms.io/mediacms/frontend/node_modules -mindepth 1 -delete 2>/dev/null || true && + find /home/mediacms.io/mediacms/frontend/packages/player/node_modules -mindepth 1 -delete 2>/dev/null || true && + find /home/mediacms.io/mediacms/frontend/packages/scripts/node_modules -mindepth 1 -delete 2>/dev/null || true && + chown -R node:node /home/mediacms.io/mediacms/frontend/node_modules && + chown -R node:node /home/mediacms.io/mediacms/frontend/packages/player/node_modules && + chown -R node:node /home/mediacms.io/mediacms/frontend/packages/scripts/node_modules && + echo 'Switching to node user...' && + su node -c ' + export NPM_CONFIG_PREFIX=/home/node/.npm-global && + echo \"Setting up frontend...\" && + rm -f package-lock.json && + rm -f packages/player/package-lock.json && + rm -f packages/scripts/package-lock.json && + echo \"Installing dependencies...\" && + npm install --legacy-peer-deps && + echo \"Setting up workspaces...\" && + npm install -g npm@latest && + cd packages/scripts && + npm install --legacy-peer-deps && + npm install rollup@2.79.1 --save-dev --legacy-peer-deps && + npm install typescript@4.9.5 --save-dev --legacy-peer-deps && + npm install tslib@2.6.2 --save --legacy-peer-deps && + npm install rollup-plugin-typescript2@0.34.1 --save-dev --legacy-peer-deps && + npm install --legacy-peer-deps && + npm run build && + cd ../.. && + cd packages/player && + npm install --legacy-peer-deps && + npm run build && + cd ../.. && + echo \"Starting development server...\" && + npm run start + '" + env_file: + - ${PWD}/frontend/.env + environment: + - NPM_CONFIG_PREFIX=/home/node/.npm-global + ports: + - "8088:8088" + depends_on: + - web + restart: unless-stopped + web: + platform: linux/amd64 + image: mediacms/mediacms:latest + command: "python manage.py runserver 0.0.0.0:80" + environment: + DEVELOPMENT_MODE: True + ports: + - "80:80" + volumes: + - ./:/home/mediacms.io/mediacms/ + depends_on: + - migrations + db: + image: postgres:17.2-alpine + volumes: + - ./postgres_data:/var/lib/postgresql/data/ + restart: always + environment: + POSTGRES_USER: mediacms + POSTGRES_PASSWORD: mediacms + POSTGRES_DB: mediacms + TZ: Europe/London + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}", "--host=db", "--dbname=$POSTGRES_DB", "--username=$POSTGRES_USER"] + interval: 10s + timeout: 5s + retries: 5 + redis: + image: "redis:alpine" + restart: always + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 30s + timeout: 10s + retries: 3 + celery_worker: + platform: linux/amd64 + image: mediacms/mediacms:latest + deploy: + replicas: 1 + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_BEAT: 'no' + ENABLE_MIGRATIONS: 'no' + DEVELOPMENT_MODE: True + depends_on: + - web + +volumes: + frontend_node_modules: + player_node_modules: + scripts_node_modules: + npm_global: diff --git a/docker-compose/docker-compose-http-proxy.yaml b/docker-compose/docker-compose-http-proxy.yaml new file mode 100644 index 00000000..ea3630b6 --- /dev/null +++ b/docker-compose/docker-compose-http-proxy.yaml @@ -0,0 +1,92 @@ +version: "3" + +services: + nginx-proxy: + image: jwilder/nginx-proxy + ports: + - "80:80" + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + - ./deploy/docker/reverse_proxy/client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro + migrations: + image: mediacms/mediacms:latest + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_CELERY_BEAT: 'no' + ADMIN_USER: 'admin' + ADMIN_EMAIL: 'admin@localhost' + #ADMIN_PASSWORD: 'uncomment_and_set_password_here' + command: "./deploy/docker/prestart.sh" + restart: on-failure + depends_on: + redis: + condition: service_healthy + db: + condition: service_healthy + web: + image: mediacms/mediacms:latest + deploy: + replicas: 1 + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_CELERY_BEAT: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_MIGRATIONS: 'no' + VIRTUAL_HOST: localhost + depends_on: + - migrations + celery_beat: + image: mediacms/mediacms:latest + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - redis + celery_worker: + image: mediacms/mediacms:latest + deploy: + replicas: 1 + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_BEAT: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - migrations + db: + image: postgres:17.2-alpine + volumes: + - ../postgres_data/:/var/lib/postgresql/data/ + restart: always + environment: + POSTGRES_USER: mediacms + POSTGRES_PASSWORD: mediacms + POSTGRES_DB: mediacms + TZ: Europe/London + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}", "--host=db", "--dbname=$POSTGRES_DB", "--username=$POSTGRES_USER"] + interval: 10s + timeout: 5s + retries: 5 + redis: + image: "redis:alpine" + restart: always + healthcheck: + test: ["CMD", "redis-cli","ping"] + interval: 30s + timeout: 10s + retries: 3 \ No newline at end of file diff --git a/docker-compose/docker-compose-https-proxy.yaml b/docker-compose/docker-compose-https-proxy.yaml new file mode 100644 index 00000000..7aa876db --- /dev/null +++ b/docker-compose/docker-compose-https-proxy.yaml @@ -0,0 +1,94 @@ +version: "3" + +services: + nginx-proxy: + image: jwilder/nginx-proxy + ports: + - "80:80" + - "443:443" + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + - ./deploy/docker/reverse_proxy/certs/:/etc/nginx/certs/ + - ./deploy/docker/reverse_proxy/client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro + migrations: + image: mediacms/mediacms:latest + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_CELERY_BEAT: 'no' + command: "./deploy/docker/prestart.sh" + restart: on-failure + depends_on: + redis: + condition: service_healthy + db: + condition: service_healthy + web: + image: mediacms/mediacms:latest + deploy: + replicas: 1 + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_CELERY_BEAT: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_MIGRATIONS: 'no' + ADMIN_USER: 'admin' + ADMIN_EMAIL: 'admin@localhost' + #ADMIN_PASSWORD: 'uncomment_and_set_password_here' + VIRTUAL_HOST: localhost + depends_on: + - migrations + celery_beat: + image: mediacms/mediacms:latest + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - redis + celery_worker: + image: mediacms/mediacms:latest + deploy: + replicas: 2 + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_BEAT: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - migrations + db: + image: postgres:17.2-alpine + volumes: + - ../postgres_data/:/var/lib/postgresql/data/ + restart: always + environment: + POSTGRES_USER: mediacms + POSTGRES_PASSWORD: mediacms + POSTGRES_DB: mediacms + TZ: Europe/London + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}", "--host=db", "--dbname=$POSTGRES_DB", "--username=$POSTGRES_USER"] + interval: 10s + timeout: 5s + retries: 5 + redis: + image: "redis:alpine" + restart: always + healthcheck: + test: ["CMD", "redis-cli","ping"] + interval: 30s + timeout: 10s + retries: 3 \ No newline at end of file diff --git a/docker-compose/docker-compose-letsencrypt.yaml b/docker-compose/docker-compose-letsencrypt.yaml new file mode 100644 index 00000000..1dac4dc4 --- /dev/null +++ b/docker-compose/docker-compose-letsencrypt.yaml @@ -0,0 +1,121 @@ +version: "3" + +# Uses https://github.com/nginx-proxy/acme-companion + +services: + nginx-proxy: + image: nginxproxy/nginx-proxy + container_name: nginx-proxy + ports: + - "80:80" + - "443:443" + volumes: + - conf:/etc/nginx/conf.d + - vhost:/etc/nginx/vhost.d + - html:/usr/share/nginx/html + - dhparam:/etc/nginx/dhparam + - certs:/etc/nginx/certs:ro + - /var/run/docker.sock:/tmp/docker.sock:ro + - ./deploy/docker/reverse_proxy/client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro + + acme-companion: + image: nginxproxy/acme-companion + container_name: nginx-proxy-acme + volumes_from: + - nginx-proxy + volumes: + - certs:/etc/nginx/certs:rw + - acme:/etc/acme.sh + - /var/run/docker.sock:/var/run/docker.sock:ro + + migrations: + image: mediacms/mediacms:latest + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_CELERY_BEAT: 'no' + ADMIN_USER: 'admin' + ADMIN_EMAIL: 'admin@localhost' + #ADMIN_PASSWORD: 'uncomment_and_set_password_here' + command: "./deploy/docker/prestart.sh" + restart: on-failure + depends_on: + redis: + condition: service_healthy + db: + condition: service_healthy + web: + image: mediacms/mediacms:latest + deploy: + replicas: 1 + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_CELERY_BEAT: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_MIGRATIONS: 'no' + VIRTUAL_HOST: 'mediacms.52.209.5.113.nip.io' + LETSENCRYPT_HOST: 'mediacms.52.209.5.113.nip.io' + LETSENCRYPT_EMAIL: 'email@example.com' + depends_on: + - migrations + celery_beat: + image: mediacms/mediacms:latest + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - redis + celery_worker: + image: mediacms/mediacms:latest + deploy: + replicas: 1 + volumes: + - ./:/home/mediacms.io/mediacms/ + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_BEAT: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - migrations + db: + image: postgres:17.2-alpine + volumes: + - ../postgres_data:/var/lib/postgresql/data/ + restart: always + environment: + POSTGRES_USER: mediacms + POSTGRES_PASSWORD: mediacms + POSTGRES_DB: mediacms + TZ: Europe/London + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}", "--host=db", "--dbname=$POSTGRES_DB", "--username=$POSTGRES_USER"] + interval: 30s + timeout: 10s + retries: 5 + redis: + image: "redis:alpine" + restart: always + healthcheck: + test: ["CMD", "redis-cli","ping"] + interval: 30s + timeout: 10s + retries: 3 +volumes: + conf: + vhost: + html: + dhparam: + certs: + acme: diff --git a/docker-compose/docker-compose-named-volumes.yaml b/docker-compose/docker-compose-named-volumes.yaml new file mode 100644 index 00000000..8bdeb89a --- /dev/null +++ b/docker-compose/docker-compose-named-volumes.yaml @@ -0,0 +1,94 @@ +version: "3" + +services: + migrations: + image: mediacms/mediacms:latest + volumes: + - ./deploy/docker/local_settings.py:/home/mediacms.io/mediacms/deploy/docker/local_settings.py + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_CELERY_BEAT: 'no' + ADMIN_USER: 'admin' + ADMIN_EMAIL: 'admin@localhost' + #ADMIN_PASSWORD: 'uncomment_and_set_password_here' + command: "./deploy/docker/prestart.sh" + restart: on-failure + depends_on: + redis: + condition: service_healthy + db: + condition: service_healthy + web: + image: mediacms/mediacms:latest + deploy: + replicas: 1 + ports: + - "80:80" + volumes: + - media_store:/home/mediacms.io/mediacms/media_files/ + - static_store:/home/mediacms.io/mediacms/static/ + - ./deploy/docker/local_settings.py:/home/mediacms.io/mediacms/deploy/docker/local_settings.py + environment: + ENABLE_CELERY_BEAT: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - migrations + celery_beat: + image: mediacms/mediacms:latest + volumes: + - ./deploy/docker/local_settings.py:/home/mediacms.io/mediacms/deploy/docker/local_settings.py + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_SHORT: 'no' + ENABLE_CELERY_LONG: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - redis + celery_worker: + image: mediacms/mediacms:latest + deploy: + replicas: 1 + volumes: + - media_store:/home/mediacms.io/mediacms/media_files/ + - static_store:/home/mediacms.io/mediacms/static/ + - ./deploy/docker/local_settings.py:/home/mediacms.io/mediacms/deploy/docker/local_settings.py + environment: + ENABLE_UWSGI: 'no' + ENABLE_NGINX: 'no' + ENABLE_CELERY_BEAT: 'no' + ENABLE_MIGRATIONS: 'no' + depends_on: + - migrations + db: + image: postgres:17.2-alpine + volumes: + - postgres_data:/var/lib/postgresql/data/ + restart: always + environment: + POSTGRES_USER: mediacms + POSTGRES_PASSWORD: mediacms + POSTGRES_DB: mediacms + TZ: Europe/London + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}", "--host=db", "--dbname=$POSTGRES_DB", "--username=$POSTGRES_USER"] + interval: 30s + timeout: 10s + retries: 5 + redis: + image: "redis:alpine" + restart: always + healthcheck: + test: ["CMD", "redis-cli","ping"] + interval: 30s + timeout: 10s + retries: 3 +volumes: + postgres_data: + media_store: + static_store: \ No newline at end of file