From f5643d5a511c1228753160f13d263f54f4c18db9 Mon Sep 17 00:00:00 2001 From: jtagcat Date: Sun, 13 Feb 2022 21:35:28 +0200 Subject: [PATCH] reform frontend out of Docker stuff + other Docker + other Docker things to get all images on cli: docker build -t t:latest-celery-fast . --target=celery-fast docker build -t t:latest-celery-slow . --target=celery-slow docker build -t t:latest . --target=api docker build -t t:latest-gpu -f gpu.Dockerfile . (compose: see docker-compose files) --- .dockerignore | 2 -- Dockerfile | 40 +++++++++++++++++++++++++-------- api-entrypoint.sh | 5 ----- docker-compose.build.gpu.yml | 9 ++------ docker-compose.build.yml | 11 ++++----- docker-compose.dev.yml | 6 ----- docker-compose.gpu.yml | 17 +++----------- docker-compose.prod.yml | 2 -- docker-compose.yml | 15 ++----------- frontend/Dockerfile | 17 -------------- frontend/entrypoint.sh | 7 ++++++ frontend/frontend-entrypoint.sh | 9 -------- gpu.Dockerfile | 27 +++++++++++----------- 13 files changed, 64 insertions(+), 103 deletions(-) mode change 100644 => 100755 api-entrypoint.sh delete mode 100644 frontend/Dockerfile create mode 100755 frontend/entrypoint.sh delete mode 100644 frontend/frontend-entrypoint.sh diff --git a/.dockerignore b/.dockerignore index 61bb0eaf..84629080 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,7 +2,6 @@ .git *Dockerfile* *docker-compose* -web-entrypoint.sh docs env @@ -11,5 +10,4 @@ screenshots frontend/assets/ frontend/node_modules -frontend/src frontend/webpack-stats.json diff --git a/Dockerfile b/Dockerfile index e38acbe8..8970f62c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,41 @@ -FROM python:3.7-buster +FROM python:3.7-buster AS celery-fast ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 -RUN mkdir -p /webapp/media /webapp/staticfiles WORKDIR /webapp +RUN mkdir -p /webapp/{media,staticfiles} +RUN apt-get update && apt-get install -y --no-install-recommends \ + ffmpeg libasound2-dev libsndfile-dev \ + && rm -rf /var/lib/apt/lists/* COPY requirements.txt /webapp/ - -# Install all dependencies -RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg libasound2-dev libsndfile-dev && pip install --upgrade pip -r requirements.txt +RUN pip install -r requirements.txt COPY . . -# Copy over entrypoint script -COPY api-entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/api-entrypoint.sh && ln -s /usr/local/bin/api-entrypoint.sh / -ENTRYPOINT ["api-entrypoint.sh"] + +COPY celery-fast-entrypoint.sh . +ENTRYPOINT ["./celery-fast-entrypoint.sh"] + +FROM celery-fast AS celery-slow +COPY celery-slow-entrypoint.sh . +ENTRYPOINT ["./celery-slow-entrypoint.sh"] + + +FROM node:14-buster AS frontend +WORKDIR /webapp/frontend +RUN mkdir -p /webapp/frontend/assets + +COPY frontend/package.json . +COPY frontend/package-lock.json . +RUN npm install + +COPY frontend/ . +RUN ./entrypoint.sh + + +FROM celery-fast AS api +COPY --from=frontend /webapp/frontend/assets /webapp/frontend/assets +COPY api-entrypoint.sh . +ENTRYPOINT ["./api-entrypoint.sh"] diff --git a/api-entrypoint.sh b/api-entrypoint.sh old mode 100644 new mode 100755 index 1066d8b9..47a3ad6e --- a/api-entrypoint.sh +++ b/api-entrypoint.sh @@ -2,11 +2,6 @@ # Collect static files if [[ -z "${DJANGO_DEVELOPMENT}" ]]; then - echo "Waiting for asset creation" - while [ ! -d /webapp/frontend/assets/dist ]; do - sleep 1 - done - echo "Collect static files" python3.7 manage.py collectstatic --noinput fi diff --git a/docker-compose.build.gpu.yml b/docker-compose.build.gpu.yml index fc13debf..c96175e7 100644 --- a/docker-compose.build.gpu.yml +++ b/docker-compose.build.gpu.yml @@ -3,16 +3,11 @@ services: nginx: build: ./nginx api: - build: - context: . - dockerfile: gpu.Dockerfile + build: . celery-fast: build: - context: . - dockerfile: gpu.Dockerfile + target: celery-fast celery-slow: build: context: . dockerfile: gpu.Dockerfile - frontend: - build: ./frontend diff --git a/docker-compose.build.yml b/docker-compose.build.yml index ae15ebab..8e23b855 100644 --- a/docker-compose.build.yml +++ b/docker-compose.build.yml @@ -3,10 +3,11 @@ services: nginx: build: ./nginx api: - build: . + build: + target: api celery-fast: - build: . + build: + target: celery-fast celery-slow: - build: . - frontend: - build: ./frontend + build: + target: celery-slow diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 6e3e7b54..ce3edf9f 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -23,9 +23,3 @@ services: volumes: - ./api:/webapp/api - ./media:/webapp/media - frontend: - environment: - - DJANGO_DEVELOPMENT=true - volumes: - - ./frontend/src:/webapp/frontend/src - restart: always diff --git a/docker-compose.gpu.yml b/docker-compose.gpu.yml index dfb6e45e..5996de68 100644 --- a/docker-compose.gpu.yml +++ b/docker-compose.gpu.yml @@ -34,9 +34,8 @@ services: - api restart: always api: - image: jeffreyca/spleeter-web-backend:${TAG:-latest}-gpu + image: jeffreyca/spleeter-web-backend:${TAG:-latest} volumes: - - assets:/webapp/frontend/assets - sqlite-data:/webapp/sqlite - staticfiles:/webapp/staticfiles stdin_open: true @@ -59,11 +58,9 @@ services: - YOUTUBE_API_KEY depends_on: - redis - - frontend restart: always celery-fast: - image: jeffreyca/spleeter-web-backend:${TAG:-latest}-gpu - entrypoint: ./celery-fast-entrypoint.sh + image: jeffreyca/spleeter-web-backend:${TAG:-latest}-celery-fast volumes: - celery-data:/webapp/celery - pretrained-models:/webapp/pretrained_models @@ -74,8 +71,7 @@ services: - redis restart: always celery-slow: - image: jeffreyca/spleeter-web-backend:${TAG:-latest}-gpu - entrypoint: ./celery-slow-entrypoint.sh + image: jeffreyca/spleeter-web-celery-slow:${TAG:-latest}-gpu volumes: - celery-data:/webapp/celery - pretrained-models:/webapp/pretrained_models @@ -85,14 +81,7 @@ services: depends_on: - redis restart: always - frontend: - image: jeffreyca/spleeter-web-frontend:${TAG:-latest} - volumes: - - assets:/webapp/frontend/assets - stdin_open: true - tty: true volumes: - assets: celery-data: pretrained-models: redis-data: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 02d58920..f78b6cf7 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -6,5 +6,3 @@ services: api: expose: - "8000" - frontend: - restart: "no" diff --git a/docker-compose.yml b/docker-compose.yml index 59bb9dce..3d81be3e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,7 +34,6 @@ services: api: image: jeffreyca/spleeter-web-backend:${TAG:-latest} volumes: - - assets:/webapp/frontend/assets - sqlite-data:/webapp/sqlite - staticfiles:/webapp/staticfiles stdin_open: true @@ -57,11 +56,9 @@ services: - YOUTUBE_API_KEY depends_on: - redis - - frontend restart: always celery-fast: - image: jeffreyca/spleeter-web-backend:${TAG:-latest} - entrypoint: ./celery-fast-entrypoint.sh + image: jeffreyca/spleeter-web-backend:${TAG:-latest}-celery-fast volumes: - celery-data:/webapp/celery - pretrained-models:/webapp/pretrained_models @@ -73,8 +70,7 @@ services: - "8.8.8.8" restart: always celery-slow: - image: jeffreyca/spleeter-web-backend:${TAG:-latest} - entrypoint: ./celery-slow-entrypoint.sh + image: jeffreyca/spleeter-web-backend:${TAG:-latest}-celery-slow volumes: - celery-data:/webapp/celery - pretrained-models:/webapp/pretrained_models @@ -83,14 +79,7 @@ services: depends_on: - redis restart: always - frontend: - image: jeffreyca/spleeter-web-frontend:${TAG:-latest} - volumes: - - assets:/webapp/frontend/assets - stdin_open: true - tty: true volumes: - assets: celery-data: pretrained-models: redis-data: diff --git a/frontend/Dockerfile b/frontend/Dockerfile deleted file mode 100644 index 1433763b..00000000 --- a/frontend/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM node:14-buster - -RUN mkdir -p /webapp/frontend/assets -WORKDIR /webapp/frontend - -# Install Node dependencies -COPY package.json /webapp/frontend/ -COPY package-lock.json /webapp/frontend/ -RUN npm install - -COPY . . - -# Copy over entrypoint script -COPY frontend-entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/frontend-entrypoint.sh -RUN ln -s /usr/local/bin/frontend-entrypoint.sh / -ENTRYPOINT ["frontend-entrypoint.sh"] diff --git a/frontend/entrypoint.sh b/frontend/entrypoint.sh new file mode 100755 index 00000000..ac56f7a6 --- /dev/null +++ b/frontend/entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ -z "${DJANGO_DEVELOPMENT}" ]; then + npm run build +else + npm run dev +fi diff --git a/frontend/frontend-entrypoint.sh b/frontend/frontend-entrypoint.sh deleted file mode 100644 index 3ee7c6b0..00000000 --- a/frontend/frontend-entrypoint.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -echo "Starting frontend" -rm -rf assets/dist -if [[ -z "${DJANGO_DEVELOPMENT}" ]]; then - npm run build -else - npm run dev -fi diff --git a/gpu.Dockerfile b/gpu.Dockerfile index d4eda8bc..8907e566 100644 --- a/gpu.Dockerfile +++ b/gpu.Dockerfile @@ -4,8 +4,7 @@ ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # Install all dependencies -RUN apt-get update \ - && apt-get install -y --no-install-recommends \ +RUN apt-get update && apt-get install -y --no-install-recommends \ software-properties-common \ curl \ ffmpeg \ @@ -18,22 +17,22 @@ RUN apt-get update \ rsync \ ssh \ wget \ - && add-apt-repository universe \ - && apt-get update \ - && apt-get -y install python3.7 python3.7-gdbm python3-distutils \ - && curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \ + && add-apt-repository universe && apt-get update && apt-get install -y \ + python3.7 \ + python3.7-gdbm \ + python3-distutils \ + && rm -rf /var/lib/apt/lists/* +RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \ && python3.7 get-pip.py \ && ln -s /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudart.so.11.0 /usr/lib/x86_64-linux-gnu/libcudart.so.11.0 -RUN mkdir -p /webapp/media /webapp/staticfiles - WORKDIR /webapp -COPY requirements.txt /webapp/ -RUN pip3 install --upgrade pip -r requirements.txt +RUN mkdir -p /webapp/{media,staticfiles} -COPY . . +COPY requirements.txt . +RUN pip install -r requirements.txt -COPY api-entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/api-entrypoint.sh && ln -s /usr/local/bin/api-entrypoint.sh / +COPY . . -ENTRYPOINT ["api-entrypoint.sh"] +COPY celery-slow-entrypoint.sh . +ENTRYPOINT ["./celery-slow-entrypoint.sh"]