diff --git a/.github/workflows/build_bench.yml b/.github/workflows/build_bench.yml index db6fe87d..9f8fd510 100644 --- a/.github/workflows/build_bench.yml +++ b/.github/workflows/build_bench.yml @@ -31,8 +31,11 @@ jobs: - name: Setup Buildx uses: docker/setup-buildx-action@v2 + - name: Set Environment Variables + run: cat example.env | grep -o '^[^#]*' >> "$GITHUB_ENV" + - name: Build and test - uses: docker/bake-action@v2.3.0 + uses: docker/bake-action@v3.1.0 with: targets: bench-test @@ -45,7 +48,7 @@ jobs: - name: Push if: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} - uses: docker/bake-action@v2.3.0 + uses: docker/bake-action@v3.1.0 with: targets: bench push: true diff --git a/.github/workflows/build_develop.yml b/.github/workflows/build_develop.yml index c3807451..97ed9a88 100644 --- a/.github/workflows/build_develop.yml +++ b/.github/workflows/build_develop.yml @@ -26,6 +26,8 @@ jobs: repo: erpnext version: develop push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} + python_version: 3.11.4 + node_version: 18.16.1 secrets: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/build_stable.yml b/.github/workflows/build_stable.yml index e842a3dc..f33832c1 100644 --- a/.github/workflows/build_stable.yml +++ b/.github/workflows/build_stable.yml @@ -36,6 +36,8 @@ jobs: repo: erpnext version: "13" push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} + python_version: 3.9.17 + node_version: 14.21.3 secrets: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} @@ -46,6 +48,8 @@ jobs: repo: erpnext version: "14" push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} + python_version: 3.10.12 + node_version: 16.20.1 secrets: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml index 8b43242a..2bdb363d 100644 --- a/.github/workflows/docker-build-push.yml +++ b/.github/workflows/docker-build-push.yml @@ -14,6 +14,14 @@ on: push: required: true type: boolean + python_version: + required: true + type: string + description: Python Version + node_version: + required: true + type: string + description: NodeJS Version secrets: DOCKERHUB_USERNAME: required: true @@ -42,8 +50,13 @@ jobs: - name: Get latest versions run: python3 ./.github/scripts/get_latest_tags.py --repo ${{ inputs.repo }} --version ${{ inputs.version }} + - name: Set build args + run: | + echo "PYTHON_VERSION=${{ inputs.python_version }}" >> "$GITHUB_ENV" + echo "NODE_VERSION=${{ inputs.node_version }}" >> "$GITHUB_ENV" + - name: Build - uses: docker/bake-action@v2.3.0 + uses: docker/bake-action@v3.1.0 with: push: true env: @@ -71,6 +84,6 @@ jobs: - name: Push if: ${{ inputs.push }} - uses: docker/bake-action@v2.3.0 + uses: docker/bake-action@v3.1.0 with: push: true diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f2d053f1..432c9dbd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.10.6" # For shfmt pre-commit hook - name: Setup Go @@ -26,14 +26,6 @@ jobs: with: go-version: "^1.14" - - name: Cache - uses: actions/cache@v3 - with: - path: | - ~/.cache/pre-commit - ~/.cache/pip - key: lint-${{ hashFiles('.pre-commit-config.yaml') }} - - name: Install pre-commit run: pip install -U pre-commit diff --git a/.github/workflows/pre-commit-autoupdate.yml b/.github/workflows/pre-commit-autoupdate.yml index 295831e6..7290563b 100644 --- a/.github/workflows/pre-commit-autoupdate.yml +++ b/.github/workflows/pre-commit-autoupdate.yml @@ -16,7 +16,7 @@ jobs: uses: vrslev/pre-commit-autoupdate@v1.0.0 - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v5 with: branch: pre-commit-autoupdate title: "chore(deps): Update pre-commit hooks" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6409cfd5..4fe958bb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,7 +8,7 @@ repos: - id: end-of-file-fixer - repo: https://github.com/asottile/pyupgrade - rev: v3.3.1 + rev: v3.7.0 hooks: - id: pyupgrade args: [--py37-plus] @@ -24,12 +24,12 @@ repos: - id: isort - repo: https://github.com/pre-commit/mirrors-prettier - rev: v3.0.0-alpha.6 + rev: v3.0.0-alpha.9-for-vscode hooks: - id: prettier - repo: https://github.com/codespell-project/codespell - rev: v2.2.4 + rev: v2.2.5 hooks: - id: codespell args: @@ -47,7 +47,7 @@ repos: types: [shell] - repo: https://github.com/shellcheck-py/shellcheck-py - rev: v0.9.0.2 + rev: v0.9.0.5 hooks: - id: shellcheck args: [-x] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cb315ca4..3cc671ee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,3 +68,14 @@ Place relevant markdown files in the `docs` directory and index them in README.m # Frappe and ERPNext updates Each Frappe/ERPNext release triggers new stable images builds as well as bump to helm chart. + +# Maintenance + +In case of new release of Debian. e.g. bullseye to bookworm. Change following files: + +- `images/erpnext/Containerfile` and `images/custom/Containerfile`: Change the files to use new debian release, make sure new python version tag that is available on new debian release image. e.g. 3.9.9 (bullseye) to 3.9.17 (bookworm) or 3.10.5 (bullseye) to 3.10.12 (bookworm). Make sure apt-get packages and wkhtmltopdf version are also upgraded accordingly. +- `images/bench/Dockerfile`: Change the files to use new debian release. Make sure apt-get packages and wkhtmltopdf version are also upgraded accordingly. + +Change following files on release of ERPNext + +- `.github/workflows/build_stable.yml`: Add the new release step under `jobs` and remove the unmaintained one. e.g. In case v12, v13 available, v14 will be added and v12 will be removed on release of v14. Also change the `needs:` for later steps to `v14` from `v13`. diff --git a/README.md b/README.md index 933d70a8..436e3f4a 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ Wait for 5 minutes for ERPNext site to be created or check `create-site` contain - [Backup and Push Cron Job](docs/backup-and-push-cronjob.md) - [Port Based Multi Tenancy](docs/port-based-multi-tenancy.md) - [Migrate from multi-image setup](docs/migrate-from-multi-image-setup.md) +- [running on linux/mac](docs/setup_for_linux_mac.md) ### [Custom Images](#custom-images) diff --git a/docker-bake.hcl b/docker-bake.hcl index 9d542136..568e0668 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -5,6 +5,13 @@ variable "REGISTRY_USER" { default = "frappe" } +variable PYTHON_VERSION { + default = "3.11.4" +} +variable NODE_VERSION { + default = "18.16.1" +} + variable "FRAPPE_VERSION" { default = "develop" } @@ -65,8 +72,8 @@ target "default-args" { BENCH_REPO = "${BENCH_REPO}" FRAPPE_BRANCH = "${FRAPPE_VERSION}" ERPNEXT_BRANCH = "${ERPNEXT_VERSION}" - PYTHON_VERSION = can(regex("v13", "${ERPNEXT_VERSION}")) ? "3.9.9" : "3.10.5" - NODE_VERSION = can(regex("v13", "${FRAPPE_VERSION}")) ? "14.19.3" : "16.18.0" + PYTHON_VERSION = "${PYTHON_VERSION}" + NODE_VERSION = "${NODE_VERSION}" } } diff --git a/docs/custom-apps.md b/docs/custom-apps.md index 8646e86d..22b19dc5 100644 --- a/docs/custom-apps.md +++ b/docs/custom-apps.md @@ -45,8 +45,8 @@ Note: buildah build \ --build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \ --build-arg=FRAPPE_BRANCH=version-14 \ - --build-arg=PYTHON_VERSION=3.10.5 \ - --build-arg=NODE_VERSION=16.18.0 \ + --build-arg=PYTHON_VERSION=3.10.12 \ + --build-arg=NODE_VERSION=16.20.1 \ --build-arg=APPS_JSON_BASE64=$APPS_JSON_BASE64 \ --tag=ghcr.io/user/repo/custom:1.0.0 \ --file=images/custom/Containerfile . @@ -88,8 +88,8 @@ podman run --rm -it \ --context=git://github.com/frappe/frappe_docker \ --build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \ --build-arg=FRAPPE_BRANCH=version-14 \ - --build-arg=PYTHON_VERSION=3.10.5 \ - --build-arg=NODE_VERSION=16.18.0 \ + --build-arg=PYTHON_VERSION=3.10.12 \ + --build-arg=NODE_VERSION=16.20.1 \ --build-arg=APPS_JSON_BASE64=$APPS_JSON_BASE64 \ --cache=true \ --destination=ghcr.io/user/repo/custom:1.0.0 \ diff --git a/docs/setup_for_linux_mac.md b/docs/setup_for_linux_mac.md new file mode 100644 index 00000000..a6ca38bd --- /dev/null +++ b/docs/setup_for_linux_mac.md @@ -0,0 +1,249 @@ +# How to install ERPNext on linux/mac using Frappe_docker ? + +step1: clone the repo + +``` +git clone https://github.com/frappe/frappe_docker +``` + +step2: add platform: linux/amd64 to all services in the /pwd.yaml + +here is the update pwd.yml file + +```yml +version: "3" + +services: + backend: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + + configurator: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: none + entrypoint: + - bash + - -c + command: + - > + ls -1 apps > sites/apps.txt; + bench set-config -g db_host $$DB_HOST; + bench set-config -gp db_port $$DB_PORT; + bench set-config -g redis_cache "redis://$$REDIS_CACHE"; + bench set-config -g redis_queue "redis://$$REDIS_QUEUE"; + bench set-config -g redis_socketio "redis://$$REDIS_SOCKETIO"; + bench set-config -gp socketio_port $$SOCKETIO_PORT; + environment: + DB_HOST: db + DB_PORT: "3306" + REDIS_CACHE: redis-cache:6379 + REDIS_QUEUE: redis-queue:6379 + REDIS_SOCKETIO: redis-socketio:6379 + SOCKETIO_PORT: "9000" + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + + create-site: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: none + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + entrypoint: + - bash + - -c + command: + - > + wait-for-it -t 120 db:3306; + wait-for-it -t 120 redis-cache:6379; + wait-for-it -t 120 redis-queue:6379; + wait-for-it -t 120 redis-socketio:6379; + export start=`date +%s`; + until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && \ + [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] && \ + [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_queue // empty"` ]]; + do + echo "Waiting for sites/common_site_config.json to be created"; + sleep 5; + if (( `date +%s`-start > 120 )); then + echo "could not find sites/common_site_config.json with required keys"; + exit 1 + fi + done; + echo "sites/common_site_config.json found"; + bench new-site frontend --no-mariadb-socket --admin-password=admin --db-root-password=admin --install-app erpnext --set-default; + + db: + image: mariadb:10.6 + platform: linux/amd64 + healthcheck: + test: mysqladmin ping -h localhost --password=admin + interval: 1s + retries: 15 + deploy: + restart_policy: + condition: on-failure + command: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + - --skip-character-set-client-handshake + - --skip-innodb-read-only-compressed # Temporary fix for MariaDB 10.6 + environment: + MYSQL_ROOT_PASSWORD: admin + volumes: + - db-data:/var/lib/mysql + + frontend: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + command: + - nginx-entrypoint.sh + environment: + BACKEND: backend:8000 + FRAPPE_SITE_NAME_HEADER: frontend + SOCKETIO: websocket:9000 + UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1 + UPSTREAM_REAL_IP_HEADER: X-Forwarded-For + UPSTREAM_REAL_IP_RECURSIVE: "off" + PROXY_READ_TIMEOUT: 120 + CLIENT_MAX_BODY_SIZE: 50m + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + ports: + - "8080:8080" + + queue-default: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + command: + - bench + - worker + - --queue + - default + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + + queue-long: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + command: + - bench + - worker + - --queue + - long + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + + queue-short: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + command: + - bench + - worker + - --queue + - short + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + + redis-queue: + image: redis:6.2-alpine + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + volumes: + - redis-queue-data:/data + + redis-cache: + image: redis:6.2-alpine + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + volumes: + - redis-cache-data:/data + + redis-socketio: + image: redis:6.2-alpine + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + volumes: + - redis-socketio-data:/data + + scheduler: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + command: + - bench + - schedule + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + + websocket: + image: frappe/erpnext:v14.27.1 + platform: linux/amd64 + deploy: + restart_policy: + condition: on-failure + command: + - node + - /home/frappe/frappe-bench/apps/frappe/socketio.js + volumes: + - sites:/home/frappe/frappe-bench/sites + - logs:/home/frappe/frappe-bench/logs + +volumes: + db-data: + redis-queue-data: + redis-cache-data: + redis-socketio-data: + sites: + logs: +``` + +step3: run the docker + +``` +docker-compose -f ./pwd.yaml up +``` + +--- + +Wait for couple of minutes. + +Open localhost:8080 diff --git a/example.env b/example.env index ed2db4ef..029f1106 100644 --- a/example.env +++ b/example.env @@ -1,6 +1,6 @@ # Reference: https://github.com/frappe/frappe_docker/blob/main/docs/images-and-compose-files.md -ERPNEXT_VERSION=v14.20.0 +ERPNEXT_VERSION=v14.28.0 DB_PASSWORD=123 @@ -38,7 +38,7 @@ UPSTREAM_REAL_IP_RECURSIVE= # All Values Allowed by nginx proxy_read_timeout are allowed, default value is 120s # Useful if you have longrunning print formats or slow loading sites -PROXY_READ_TIMOUT= +PROXY_READ_TIMEOUT= # All Values allowed by nginx client_max_body_size are allowed, default value is 50m # Necessary if the upload limit in the frappe application is increased diff --git a/images/bench/Dockerfile b/images/bench/Dockerfile index dbcb4593..e12d5e53 100644 --- a/images/bench/Dockerfile +++ b/images/bench/Dockerfile @@ -1,9 +1,9 @@ -FROM debian:bullseye-slim as bench +FROM debian:bookworm-slim as bench LABEL author=frappé ARG GIT_REPO=https://github.com/frappe/bench.git -ARG GIT_BRANCH=develop +ARG GIT_BRANCH=v5.x RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ @@ -75,10 +75,11 @@ RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \ && dpkg-reconfigure --frontend=noninteractive locales # Detect arch and install wkhtmltopdf -ENV WKHTMLTOPDF_VERSION 0.12.6-1 +ARG WKHTMLTOPDF_VERSION=0.12.6.1-3 +ARG WKHTMLTOPDF_DISTRO=bookworm RUN if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \ && if [ "$(uname -m)" = "x86_64" ]; then export ARCH=amd64; fi \ - && downloaded_file=wkhtmltox_$WKHTMLTOPDF_VERSION.buster_${ARCH}.deb \ + && downloaded_file=wkhtmltox_${WKHTMLTOPDF_VERSION}.${WKHTMLTOPDF_DISTRO}_${ARCH}.deb \ && wget -q https://github.com/wkhtmltopdf/packaging/releases/download/$WKHTMLTOPDF_VERSION/$downloaded_file \ && dpkg -i $downloaded_file \ && rm $downloaded_file @@ -94,16 +95,19 @@ USER frappe WORKDIR /home/frappe # Install Python via pyenv -ENV PYTHON_VERSION_V13=3.9.9 -ENV PYTHON_VERSION=3.10.5 +ENV PYTHON_VERSION_V13=3.9.17 +ENV PYTHON_VERSION_DEVELOP=3.11.4 +ENV PYTHON_VERSION=3.10.12 ENV PYENV_ROOT /home/frappe/.pyenv ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH # From https://github.com/pyenv/pyenv#basic-github-checkout RUN git clone --depth 1 https://github.com/pyenv/pyenv.git .pyenv \ && pyenv install $PYTHON_VERSION_V13 \ + && pyenv install $PYTHON_VERSION_DEVELOP \ && pyenv install $PYTHON_VERSION \ && PYENV_VERSION=$PYTHON_VERSION_V13 pip install --no-cache-dir virtualenv \ + && PYENV_VERSION=$PYTHON_VERSION_DEVELOP pip install --no-cache-dir virtualenv \ && PYENV_VERSION=$PYTHON_VERSION pip install --no-cache-dir virtualenv \ && pyenv global $PYTHON_VERSION $PYTHON_VERSION_v13 \ && sed -Ei -e '/^([^#]|$)/ {a export PYENV_ROOT="/home/frappe/.pyenv" a export PATH="$PYENV_ROOT/bin:$PATH" a ' -e ':a' -e '$!{n;ba};}' ~/.profile \ @@ -121,15 +125,19 @@ RUN git clone ${GIT_REPO} --depth 1 -b ${GIT_BRANCH} .bench \ && echo "export BENCH_DEVELOPER=1" >>/home/frappe/.bashrc # Install Node via nvm -ENV NODE_VERSION_14=14.19.3 -ENV NODE_VERSION=16.18.0 +ENV NODE_VERSION_13=14.21.3 +ENV NODE_VERSION_DEVELOP=14.21.3 +ENV NODE_VERSION=16.20.1 ENV NVM_DIR /home/frappe/.nvm ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH} RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash \ && . ${NVM_DIR}/nvm.sh \ - && nvm install ${NODE_VERSION_14} \ - && nvm use v${NODE_VERSION_14} \ + && nvm install ${NODE_VERSION_13} \ + && nvm use v${NODE_VERSION_13} \ + && npm install -g yarn \ + && nvm install ${NODE_VERSION_DEVELOP} \ + && nvm use v${NODE_VERSION_DEVELOP} \ && npm install -g yarn \ && nvm install ${NODE_VERSION} \ && nvm use v${NODE_VERSION} \ diff --git a/images/custom/Containerfile b/images/custom/Containerfile index 3a16f952..e9200833 100644 --- a/images/custom/Containerfile +++ b/images/custom/Containerfile @@ -1,11 +1,13 @@ -ARG PYTHON_VERSION=3.10.5 -FROM python:${PYTHON_VERSION}-slim-bullseye AS base +ARG PYTHON_VERSION=3.11.4 +ARG DEBIAN_BASE=bookworm +FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base COPY resources/nginx-template.conf /templates/nginx/frappe.conf.template COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh -ARG WKHTMLTOPDF_VERSION=0.12.6-1 -ARG NODE_VERSION=16.18.0 +ARG WKHTMLTOPDF_VERSION=0.12.6.1-3 +ARG WKHTMLTOPDF_DISTRO=bookworm +ARG NODE_VERSION=18.16.1 ENV NVM_DIR=/home/frappe/.nvm ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH} @@ -47,7 +49,7 @@ RUN useradd -ms /bin/bash frappe \ # Install wkhtmltopdf with patched qt && if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \ && if [ "$(uname -m)" = "x86_64" ]; then export ARCH=amd64; fi \ - && downloaded_file=wkhtmltox_$WKHTMLTOPDF_VERSION.buster_${ARCH}.deb \ + && downloaded_file=wkhtmltox_${WKHTMLTOPDF_VERSION}.${WKHTMLTOPDF_DISTRO}_${ARCH}.deb \ && curl -sLO https://github.com/wkhtmltopdf/packaging/releases/download/$WKHTMLTOPDF_VERSION/$downloaded_file \ && apt-get install -y ./$downloaded_file \ && rm $downloaded_file \ diff --git a/images/production/Containerfile b/images/production/Containerfile index 5f761c81..2add02a0 100644 --- a/images/production/Containerfile +++ b/images/production/Containerfile @@ -1,8 +1,10 @@ -ARG PYTHON_VERSION=3.10.5 -FROM python:${PYTHON_VERSION}-slim-bullseye AS base +ARG PYTHON_VERSION=3.11.4 +ARG DEBIAN_BASE=bookworm +FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base -ARG WKHTMLTOPDF_VERSION=0.12.6-1 -ARG NODE_VERSION=16.18.0 +ARG WKHTMLTOPDF_VERSION=0.12.6.1-3 +ARG WKHTMLTOPDF_DISTRO=bookworm +ARG NODE_VERSION=18.16.1 ENV NVM_DIR=/home/frappe/.nvm ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH} @@ -44,7 +46,7 @@ RUN useradd -ms /bin/bash frappe \ # Install wkhtmltopdf with patched qt && if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \ && if [ "$(uname -m)" = "x86_64" ]; then export ARCH=amd64; fi \ - && downloaded_file=wkhtmltox_$WKHTMLTOPDF_VERSION.buster_${ARCH}.deb \ + && downloaded_file=wkhtmltox_${WKHTMLTOPDF_VERSION}.${WKHTMLTOPDF_DISTRO}_${ARCH}.deb \ && curl -sLO https://github.com/wkhtmltopdf/packaging/releases/download/$WKHTMLTOPDF_VERSION/$downloaded_file \ && apt-get install -y ./$downloaded_file \ && rm $downloaded_file \ diff --git a/overrides/compose.postgres.yaml b/overrides/compose.postgres.yaml index f126fa31..433ca71a 100644 --- a/overrides/compose.postgres.yaml +++ b/overrides/compose.postgres.yaml @@ -12,7 +12,7 @@ services: environment: POSTGRES_PASSWORD: ${DB_PASSWORD:?No db password set} volumes: - - db-data:/var/lib/postgresql + - db-data:/var/lib/postgresql/data volumes: db-data: diff --git a/pwd.yml b/pwd.yml index 8811db01..11b8ce4d 100644 --- a/pwd.yml +++ b/pwd.yml @@ -2,7 +2,7 @@ version: "3" services: backend: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: on-failure @@ -11,7 +11,7 @@ services: - logs:/home/frappe/frappe-bench/logs configurator: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: none @@ -39,7 +39,7 @@ services: - logs:/home/frappe/frappe-bench/logs create-site: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: none @@ -90,7 +90,7 @@ services: - db-data:/var/lib/mysql frontend: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: on-failure @@ -103,7 +103,7 @@ services: UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1 UPSTREAM_REAL_IP_HEADER: X-Forwarded-For UPSTREAM_REAL_IP_RECURSIVE: "off" - PROXY_READ_TIMOUT: 120 + PROXY_READ_TIMEOUT: 120 CLIENT_MAX_BODY_SIZE: 50m volumes: - sites:/home/frappe/frappe-bench/sites @@ -112,7 +112,7 @@ services: - "8080:8080" queue-default: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: on-failure @@ -126,7 +126,7 @@ services: - logs:/home/frappe/frappe-bench/logs queue-long: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: on-failure @@ -140,7 +140,7 @@ services: - logs:/home/frappe/frappe-bench/logs queue-short: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: on-failure @@ -178,7 +178,7 @@ services: - redis-socketio-data:/data scheduler: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: on-failure @@ -190,7 +190,7 @@ services: - logs:/home/frappe/frappe-bench/logs websocket: - image: frappe/erpnext:v14.20.0 + image: frappe/erpnext:v14.28.0 deploy: restart_policy: condition: on-failure diff --git a/requirements-test.txt b/requirements-test.txt index c021c5b5..70613be0 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1 +1 @@ -pytest==7.2.2 +pytest==7.4.0