From 5317217570b6404ffbdb402249729e12575c9dab Mon Sep 17 00:00:00 2001 From: hay-kot Date: Thu, 29 Apr 2021 10:16:29 -0800 Subject: [PATCH] consolidate docker files --- docker/Dockerfile | 54 +++++++++++++++++++++++++++++++++++ docker/Dockerfile.dev | 24 ++++++++++++++++ docker/docker-compose.dev.yml | 46 +++++++++++++++++++++++++++++ docker/docker-compose.yml | 12 ++++++++ 4 files changed, 136 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 docker/Dockerfile.dev create mode 100644 docker/docker-compose.dev.yml create mode 100644 docker/docker-compose.yml diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 000000000..e1321727d --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,54 @@ +FROM node:lts-alpine as build-stage +WORKDIR /app +COPY ./frontend/package*.json ./ +RUN npm install +COPY ./frontend/ . +RUN npm run build + +FROM python:3.9-alpine + + +RUN apk add --no-cache libxml2-dev \ + libxslt-dev \ + libxml2 caddy \ + libffi-dev \ + python3 \ + python3-dev \ + jpeg-dev \ + lcms2-dev \ + openjpeg-dev \ + zlib-dev + + +ENV PRODUCTION true +EXPOSE 80 +WORKDIR /app/ + +COPY ./pyproject.toml /app/ + +RUN apk add --update --no-cache --virtual .build-deps \ + curl \ + g++ \ + python3-dev \ + musl-dev \ + gcc \ + build-base && \ + curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | POETRY_HOME=/opt/poetry python && \ + cd /usr/local/bin && \ + ln -s /opt/poetry/bin/poetry && \ + poetry config virtualenvs.create false && \ + cd /app/ && poetry install --no-root --no-dev && \ + apk --purge del .build-deps + +COPY ./mealie /app/mealie +RUN poetry install --no-dev + +COPY ./Caddyfile /app +COPY ./dev/data/templates /app/data/templates +COPY --from=build-stage /app/dist /app/dist + +VOLUME [ "/app/data/" ] + +RUN chmod +x /app/mealie/run.sh +CMD /app/mealie/run.sh + diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev new file mode 100644 index 000000000..2c5519117 --- /dev/null +++ b/docker/Dockerfile.dev @@ -0,0 +1,24 @@ +FROM python:3 + +WORKDIR /app/ + +ENV PRODUCTION false + +RUN apt-get update -y && \ + apt-get install -y python-pip python-dev + +# Install Poetry +RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | POETRY_HOME=/opt/poetry python && \ + cd /usr/local/bin && \ + ln -s /opt/poetry/bin/poetry && \ + poetry config virtualenvs.create false + +# Copy poetry.lock* in case it doesn't exist in the repo +COPY ./pyproject.toml /app/ + +COPY ./mealie /app/mealie + +RUN poetry install + +RUN chmod +x /app/mealie/run.sh +CMD ["/app/mealie/run.sh", "reload"] diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml new file mode 100644 index 000000000..968771104 --- /dev/null +++ b/docker/docker-compose.dev.yml @@ -0,0 +1,46 @@ +# Use root/example as user/password credentials +version: "3.1" +services: + # Vue Frontend + mealie-frontend: + container_name: mealie-frontend + image: mealie-frontend:dev + build: + context: ../frontend + dockerfile: frontend.Dockerfile + restart: always + ports: + - 9920:8080 + environment: + VUE_APP_API_BASE_URL: "http://mealie-api:9000" + volumes: + - ../frontend/:/app + - /app/node_modules + + # Fast API + mealie-api: + container_name: mealie-api + image: mealie-api:dev + build: + context: ../ + dockerfile: ./docker/Dockerfile.dev + restart: always + ports: + - 9921:9000 + environment: + db_type: sqlite + TZ: America/Anchorage # Specify Correct Timezone for Date/Time to line up correctly. + volumes: + - ../dev/data:/app/dev/data + - ../mealie:/app/mealie + + # Mkdocs + mealie-docs: + container_name: mealie-docs + image: squidfunk/mkdocs-material + restart: always + ports: + - 9922:8000 + volumes: + - ../docs:/docs + diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 000000000..28afb4d90 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3.1" +services: + mealie: + build: + context: ../ + dockerfile: ./docker/Dockerfile + container_name: mealie + restart: always + ports: + - 9090:80 + environment: + db_type: sqlite