mirror of
https://github.com/frappe/frappe_docker.git
synced 2026-06-26 09:05:10 +00:00
Merge pull request #1 from frappe/main
frappe docker pull request to keep the forked repo up to date
This commit is contained in:
commit
9ba147ffaa
19 changed files with 352 additions and 58 deletions
7
.github/workflows/build_bench.yml
vendored
7
.github/workflows/build_bench.yml
vendored
|
|
@ -31,8 +31,11 @@ jobs:
|
||||||
- name: Setup Buildx
|
- name: Setup Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: Set Environment Variables
|
||||||
|
run: cat example.env | grep -o '^[^#]*' >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Build and test
|
- name: Build and test
|
||||||
uses: docker/bake-action@v2.3.0
|
uses: docker/bake-action@v3.1.0
|
||||||
with:
|
with:
|
||||||
targets: bench-test
|
targets: bench-test
|
||||||
|
|
||||||
|
|
@ -45,7 +48,7 @@ jobs:
|
||||||
|
|
||||||
- name: Push
|
- name: Push
|
||||||
if: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }}
|
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:
|
with:
|
||||||
targets: bench
|
targets: bench
|
||||||
push: true
|
push: true
|
||||||
|
|
|
||||||
2
.github/workflows/build_develop.yml
vendored
2
.github/workflows/build_develop.yml
vendored
|
|
@ -26,6 +26,8 @@ jobs:
|
||||||
repo: erpnext
|
repo: erpnext
|
||||||
version: develop
|
version: develop
|
||||||
push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }}
|
push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }}
|
||||||
|
python_version: 3.11.4
|
||||||
|
node_version: 18.16.1
|
||||||
secrets:
|
secrets:
|
||||||
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
|
||||||
4
.github/workflows/build_stable.yml
vendored
4
.github/workflows/build_stable.yml
vendored
|
|
@ -36,6 +36,8 @@ jobs:
|
||||||
repo: erpnext
|
repo: erpnext
|
||||||
version: "13"
|
version: "13"
|
||||||
push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }}
|
push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }}
|
||||||
|
python_version: 3.9.17
|
||||||
|
node_version: 14.21.3
|
||||||
secrets:
|
secrets:
|
||||||
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
@ -46,6 +48,8 @@ jobs:
|
||||||
repo: erpnext
|
repo: erpnext
|
||||||
version: "14"
|
version: "14"
|
||||||
push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }}
|
push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }}
|
||||||
|
python_version: 3.10.12
|
||||||
|
node_version: 16.20.1
|
||||||
secrets:
|
secrets:
|
||||||
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
|
||||||
17
.github/workflows/docker-build-push.yml
vendored
17
.github/workflows/docker-build-push.yml
vendored
|
|
@ -14,6 +14,14 @@ on:
|
||||||
push:
|
push:
|
||||||
required: true
|
required: true
|
||||||
type: boolean
|
type: boolean
|
||||||
|
python_version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: Python Version
|
||||||
|
node_version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: NodeJS Version
|
||||||
secrets:
|
secrets:
|
||||||
DOCKERHUB_USERNAME:
|
DOCKERHUB_USERNAME:
|
||||||
required: true
|
required: true
|
||||||
|
|
@ -42,8 +50,13 @@ jobs:
|
||||||
- name: Get latest versions
|
- name: Get latest versions
|
||||||
run: python3 ./.github/scripts/get_latest_tags.py --repo ${{ inputs.repo }} --version ${{ inputs.version }}
|
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
|
- name: Build
|
||||||
uses: docker/bake-action@v2.3.0
|
uses: docker/bake-action@v3.1.0
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
env:
|
env:
|
||||||
|
|
@ -71,6 +84,6 @@ jobs:
|
||||||
|
|
||||||
- name: Push
|
- name: Push
|
||||||
if: ${{ inputs.push }}
|
if: ${{ inputs.push }}
|
||||||
uses: docker/bake-action@v2.3.0
|
uses: docker/bake-action@v3.1.0
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
|
|
|
||||||
10
.github/workflows/lint.yml
vendored
10
.github/workflows/lint.yml
vendored
|
|
@ -18,7 +18,7 @@ jobs:
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: "3.10"
|
python-version: "3.10.6"
|
||||||
|
|
||||||
# For shfmt pre-commit hook
|
# For shfmt pre-commit hook
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
|
|
@ -26,14 +26,6 @@ jobs:
|
||||||
with:
|
with:
|
||||||
go-version: "^1.14"
|
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
|
- name: Install pre-commit
|
||||||
run: pip install -U pre-commit
|
run: pip install -U pre-commit
|
||||||
|
|
||||||
|
|
|
||||||
2
.github/workflows/pre-commit-autoupdate.yml
vendored
2
.github/workflows/pre-commit-autoupdate.yml
vendored
|
|
@ -16,7 +16,7 @@ jobs:
|
||||||
uses: vrslev/pre-commit-autoupdate@v1.0.0
|
uses: vrslev/pre-commit-autoupdate@v1.0.0
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@v4
|
uses: peter-evans/create-pull-request@v5
|
||||||
with:
|
with:
|
||||||
branch: pre-commit-autoupdate
|
branch: pre-commit-autoupdate
|
||||||
title: "chore(deps): Update pre-commit hooks"
|
title: "chore(deps): Update pre-commit hooks"
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ repos:
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
|
|
||||||
- repo: https://github.com/asottile/pyupgrade
|
- repo: https://github.com/asottile/pyupgrade
|
||||||
rev: v3.3.1
|
rev: v3.7.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: pyupgrade
|
- id: pyupgrade
|
||||||
args: [--py37-plus]
|
args: [--py37-plus]
|
||||||
|
|
@ -24,12 +24,12 @@ repos:
|
||||||
- id: isort
|
- id: isort
|
||||||
|
|
||||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||||
rev: v3.0.0-alpha.6
|
rev: v3.0.0-alpha.9-for-vscode
|
||||||
hooks:
|
hooks:
|
||||||
- id: prettier
|
- id: prettier
|
||||||
|
|
||||||
- repo: https://github.com/codespell-project/codespell
|
- repo: https://github.com/codespell-project/codespell
|
||||||
rev: v2.2.4
|
rev: v2.2.5
|
||||||
hooks:
|
hooks:
|
||||||
- id: codespell
|
- id: codespell
|
||||||
args:
|
args:
|
||||||
|
|
@ -47,7 +47,7 @@ repos:
|
||||||
types: [shell]
|
types: [shell]
|
||||||
|
|
||||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||||
rev: v0.9.0.2
|
rev: v0.9.0.5
|
||||||
hooks:
|
hooks:
|
||||||
- id: shellcheck
|
- id: shellcheck
|
||||||
args: [-x]
|
args: [-x]
|
||||||
|
|
|
||||||
|
|
@ -68,3 +68,14 @@ Place relevant markdown files in the `docs` directory and index them in README.m
|
||||||
# Frappe and ERPNext updates
|
# Frappe and ERPNext updates
|
||||||
|
|
||||||
Each Frappe/ERPNext release triggers new stable images builds as well as bump to helm chart.
|
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`.
|
||||||
|
|
|
||||||
|
|
@ -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)
|
- [Backup and Push Cron Job](docs/backup-and-push-cronjob.md)
|
||||||
- [Port Based Multi Tenancy](docs/port-based-multi-tenancy.md)
|
- [Port Based Multi Tenancy](docs/port-based-multi-tenancy.md)
|
||||||
- [Migrate from multi-image setup](docs/migrate-from-multi-image-setup.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)
|
### [Custom Images](#custom-images)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,13 @@ variable "REGISTRY_USER" {
|
||||||
default = "frappe"
|
default = "frappe"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable PYTHON_VERSION {
|
||||||
|
default = "3.11.4"
|
||||||
|
}
|
||||||
|
variable NODE_VERSION {
|
||||||
|
default = "18.16.1"
|
||||||
|
}
|
||||||
|
|
||||||
variable "FRAPPE_VERSION" {
|
variable "FRAPPE_VERSION" {
|
||||||
default = "develop"
|
default = "develop"
|
||||||
}
|
}
|
||||||
|
|
@ -65,8 +72,8 @@ target "default-args" {
|
||||||
BENCH_REPO = "${BENCH_REPO}"
|
BENCH_REPO = "${BENCH_REPO}"
|
||||||
FRAPPE_BRANCH = "${FRAPPE_VERSION}"
|
FRAPPE_BRANCH = "${FRAPPE_VERSION}"
|
||||||
ERPNEXT_BRANCH = "${ERPNEXT_VERSION}"
|
ERPNEXT_BRANCH = "${ERPNEXT_VERSION}"
|
||||||
PYTHON_VERSION = can(regex("v13", "${ERPNEXT_VERSION}")) ? "3.9.9" : "3.10.5"
|
PYTHON_VERSION = "${PYTHON_VERSION}"
|
||||||
NODE_VERSION = can(regex("v13", "${FRAPPE_VERSION}")) ? "14.19.3" : "16.18.0"
|
NODE_VERSION = "${NODE_VERSION}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,8 @@ Note:
|
||||||
buildah build \
|
buildah build \
|
||||||
--build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \
|
--build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \
|
||||||
--build-arg=FRAPPE_BRANCH=version-14 \
|
--build-arg=FRAPPE_BRANCH=version-14 \
|
||||||
--build-arg=PYTHON_VERSION=3.10.5 \
|
--build-arg=PYTHON_VERSION=3.10.12 \
|
||||||
--build-arg=NODE_VERSION=16.18.0 \
|
--build-arg=NODE_VERSION=16.20.1 \
|
||||||
--build-arg=APPS_JSON_BASE64=$APPS_JSON_BASE64 \
|
--build-arg=APPS_JSON_BASE64=$APPS_JSON_BASE64 \
|
||||||
--tag=ghcr.io/user/repo/custom:1.0.0 \
|
--tag=ghcr.io/user/repo/custom:1.0.0 \
|
||||||
--file=images/custom/Containerfile .
|
--file=images/custom/Containerfile .
|
||||||
|
|
@ -88,8 +88,8 @@ podman run --rm -it \
|
||||||
--context=git://github.com/frappe/frappe_docker \
|
--context=git://github.com/frappe/frappe_docker \
|
||||||
--build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \
|
--build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \
|
||||||
--build-arg=FRAPPE_BRANCH=version-14 \
|
--build-arg=FRAPPE_BRANCH=version-14 \
|
||||||
--build-arg=PYTHON_VERSION=3.10.5 \
|
--build-arg=PYTHON_VERSION=3.10.12 \
|
||||||
--build-arg=NODE_VERSION=16.18.0 \
|
--build-arg=NODE_VERSION=16.20.1 \
|
||||||
--build-arg=APPS_JSON_BASE64=$APPS_JSON_BASE64 \
|
--build-arg=APPS_JSON_BASE64=$APPS_JSON_BASE64 \
|
||||||
--cache=true \
|
--cache=true \
|
||||||
--destination=ghcr.io/user/repo/custom:1.0.0 \
|
--destination=ghcr.io/user/repo/custom:1.0.0 \
|
||||||
|
|
|
||||||
249
docs/setup_for_linux_mac.md
Normal file
249
docs/setup_for_linux_mac.md
Normal file
|
|
@ -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
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Reference: https://github.com/frappe/frappe_docker/blob/main/docs/images-and-compose-files.md
|
# 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
|
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
|
# 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
|
# 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
|
# 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
|
# Necessary if the upload limit in the frappe application is increased
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
FROM debian:bullseye-slim as bench
|
FROM debian:bookworm-slim as bench
|
||||||
|
|
||||||
LABEL author=frappé
|
LABEL author=frappé
|
||||||
|
|
||||||
ARG GIT_REPO=https://github.com/frappe/bench.git
|
ARG GIT_REPO=https://github.com/frappe/bench.git
|
||||||
ARG GIT_BRANCH=develop
|
ARG GIT_BRANCH=v5.x
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
|
&& 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
|
&& dpkg-reconfigure --frontend=noninteractive locales
|
||||||
|
|
||||||
# Detect arch and install wkhtmltopdf
|
# 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 \
|
RUN if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \
|
||||||
&& if [ "$(uname -m)" = "x86_64" ]; then export ARCH=amd64; 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 \
|
&& wget -q https://github.com/wkhtmltopdf/packaging/releases/download/$WKHTMLTOPDF_VERSION/$downloaded_file \
|
||||||
&& dpkg -i $downloaded_file \
|
&& dpkg -i $downloaded_file \
|
||||||
&& rm $downloaded_file
|
&& rm $downloaded_file
|
||||||
|
|
@ -94,16 +95,19 @@ USER frappe
|
||||||
WORKDIR /home/frappe
|
WORKDIR /home/frappe
|
||||||
|
|
||||||
# Install Python via pyenv
|
# Install Python via pyenv
|
||||||
ENV PYTHON_VERSION_V13=3.9.9
|
ENV PYTHON_VERSION_V13=3.9.17
|
||||||
ENV PYTHON_VERSION=3.10.5
|
ENV PYTHON_VERSION_DEVELOP=3.11.4
|
||||||
|
ENV PYTHON_VERSION=3.10.12
|
||||||
ENV PYENV_ROOT /home/frappe/.pyenv
|
ENV PYENV_ROOT /home/frappe/.pyenv
|
||||||
ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
|
ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
|
||||||
|
|
||||||
# From https://github.com/pyenv/pyenv#basic-github-checkout
|
# From https://github.com/pyenv/pyenv#basic-github-checkout
|
||||||
RUN git clone --depth 1 https://github.com/pyenv/pyenv.git .pyenv \
|
RUN git clone --depth 1 https://github.com/pyenv/pyenv.git .pyenv \
|
||||||
&& pyenv install $PYTHON_VERSION_V13 \
|
&& pyenv install $PYTHON_VERSION_V13 \
|
||||||
|
&& pyenv install $PYTHON_VERSION_DEVELOP \
|
||||||
&& pyenv install $PYTHON_VERSION \
|
&& pyenv install $PYTHON_VERSION \
|
||||||
&& PYENV_VERSION=$PYTHON_VERSION_V13 pip install --no-cache-dir virtualenv \
|
&& 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_VERSION=$PYTHON_VERSION pip install --no-cache-dir virtualenv \
|
||||||
&& pyenv global $PYTHON_VERSION $PYTHON_VERSION_v13 \
|
&& 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 \
|
&& 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
|
&& echo "export BENCH_DEVELOPER=1" >>/home/frappe/.bashrc
|
||||||
|
|
||||||
# Install Node via nvm
|
# Install Node via nvm
|
||||||
ENV NODE_VERSION_14=14.19.3
|
ENV NODE_VERSION_13=14.21.3
|
||||||
ENV NODE_VERSION=16.18.0
|
ENV NODE_VERSION_DEVELOP=14.21.3
|
||||||
|
ENV NODE_VERSION=16.20.1
|
||||||
ENV NVM_DIR /home/frappe/.nvm
|
ENV NVM_DIR /home/frappe/.nvm
|
||||||
ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH}
|
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 \
|
RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash \
|
||||||
&& . ${NVM_DIR}/nvm.sh \
|
&& . ${NVM_DIR}/nvm.sh \
|
||||||
&& nvm install ${NODE_VERSION_14} \
|
&& nvm install ${NODE_VERSION_13} \
|
||||||
&& nvm use v${NODE_VERSION_14} \
|
&& 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 \
|
&& npm install -g yarn \
|
||||||
&& nvm install ${NODE_VERSION} \
|
&& nvm install ${NODE_VERSION} \
|
||||||
&& nvm use v${NODE_VERSION} \
|
&& nvm use v${NODE_VERSION} \
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
ARG PYTHON_VERSION=3.10.5
|
ARG PYTHON_VERSION=3.11.4
|
||||||
FROM python:${PYTHON_VERSION}-slim-bullseye AS base
|
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-template.conf /templates/nginx/frappe.conf.template
|
||||||
COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh
|
COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh
|
||||||
|
|
||||||
ARG WKHTMLTOPDF_VERSION=0.12.6-1
|
ARG WKHTMLTOPDF_VERSION=0.12.6.1-3
|
||||||
ARG NODE_VERSION=16.18.0
|
ARG WKHTMLTOPDF_DISTRO=bookworm
|
||||||
|
ARG NODE_VERSION=18.16.1
|
||||||
ENV NVM_DIR=/home/frappe/.nvm
|
ENV NVM_DIR=/home/frappe/.nvm
|
||||||
ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH}
|
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
|
# Install wkhtmltopdf with patched qt
|
||||||
&& if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \
|
&& if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \
|
||||||
&& if [ "$(uname -m)" = "x86_64" ]; then export ARCH=amd64; 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 \
|
&& curl -sLO https://github.com/wkhtmltopdf/packaging/releases/download/$WKHTMLTOPDF_VERSION/$downloaded_file \
|
||||||
&& apt-get install -y ./$downloaded_file \
|
&& apt-get install -y ./$downloaded_file \
|
||||||
&& rm $downloaded_file \
|
&& rm $downloaded_file \
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
ARG PYTHON_VERSION=3.10.5
|
ARG PYTHON_VERSION=3.11.4
|
||||||
FROM python:${PYTHON_VERSION}-slim-bullseye AS base
|
ARG DEBIAN_BASE=bookworm
|
||||||
|
FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base
|
||||||
|
|
||||||
ARG WKHTMLTOPDF_VERSION=0.12.6-1
|
ARG WKHTMLTOPDF_VERSION=0.12.6.1-3
|
||||||
ARG NODE_VERSION=16.18.0
|
ARG WKHTMLTOPDF_DISTRO=bookworm
|
||||||
|
ARG NODE_VERSION=18.16.1
|
||||||
ENV NVM_DIR=/home/frappe/.nvm
|
ENV NVM_DIR=/home/frappe/.nvm
|
||||||
ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH}
|
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
|
# Install wkhtmltopdf with patched qt
|
||||||
&& if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \
|
&& if [ "$(uname -m)" = "aarch64" ]; then export ARCH=arm64; fi \
|
||||||
&& if [ "$(uname -m)" = "x86_64" ]; then export ARCH=amd64; 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 \
|
&& curl -sLO https://github.com/wkhtmltopdf/packaging/releases/download/$WKHTMLTOPDF_VERSION/$downloaded_file \
|
||||||
&& apt-get install -y ./$downloaded_file \
|
&& apt-get install -y ./$downloaded_file \
|
||||||
&& rm $downloaded_file \
|
&& rm $downloaded_file \
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ services:
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_PASSWORD: ${DB_PASSWORD:?No db password set}
|
POSTGRES_PASSWORD: ${DB_PASSWORD:?No db password set}
|
||||||
volumes:
|
volumes:
|
||||||
- db-data:/var/lib/postgresql
|
- db-data:/var/lib/postgresql/data
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
db-data:
|
db-data:
|
||||||
|
|
|
||||||
20
pwd.yml
20
pwd.yml
|
|
@ -2,7 +2,7 @@ version: "3"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
backend:
|
backend:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|
@ -11,7 +11,7 @@ services:
|
||||||
- logs:/home/frappe/frappe-bench/logs
|
- logs:/home/frappe/frappe-bench/logs
|
||||||
|
|
||||||
configurator:
|
configurator:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: none
|
condition: none
|
||||||
|
|
@ -39,7 +39,7 @@ services:
|
||||||
- logs:/home/frappe/frappe-bench/logs
|
- logs:/home/frappe/frappe-bench/logs
|
||||||
|
|
||||||
create-site:
|
create-site:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: none
|
condition: none
|
||||||
|
|
@ -90,7 +90,7 @@ services:
|
||||||
- db-data:/var/lib/mysql
|
- db-data:/var/lib/mysql
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|
@ -103,7 +103,7 @@ services:
|
||||||
UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1
|
UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1
|
||||||
UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
|
UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
|
||||||
UPSTREAM_REAL_IP_RECURSIVE: "off"
|
UPSTREAM_REAL_IP_RECURSIVE: "off"
|
||||||
PROXY_READ_TIMOUT: 120
|
PROXY_READ_TIMEOUT: 120
|
||||||
CLIENT_MAX_BODY_SIZE: 50m
|
CLIENT_MAX_BODY_SIZE: 50m
|
||||||
volumes:
|
volumes:
|
||||||
- sites:/home/frappe/frappe-bench/sites
|
- sites:/home/frappe/frappe-bench/sites
|
||||||
|
|
@ -112,7 +112,7 @@ services:
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
|
|
||||||
queue-default:
|
queue-default:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|
@ -126,7 +126,7 @@ services:
|
||||||
- logs:/home/frappe/frappe-bench/logs
|
- logs:/home/frappe/frappe-bench/logs
|
||||||
|
|
||||||
queue-long:
|
queue-long:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|
@ -140,7 +140,7 @@ services:
|
||||||
- logs:/home/frappe/frappe-bench/logs
|
- logs:/home/frappe/frappe-bench/logs
|
||||||
|
|
||||||
queue-short:
|
queue-short:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|
@ -178,7 +178,7 @@ services:
|
||||||
- redis-socketio-data:/data
|
- redis-socketio-data:/data
|
||||||
|
|
||||||
scheduler:
|
scheduler:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|
@ -190,7 +190,7 @@ services:
|
||||||
- logs:/home/frappe/frappe-bench/logs
|
- logs:/home/frappe/frappe-bench/logs
|
||||||
|
|
||||||
websocket:
|
websocket:
|
||||||
image: frappe/erpnext:v14.20.0
|
image: frappe/erpnext:v14.28.0
|
||||||
deploy:
|
deploy:
|
||||||
restart_policy:
|
restart_policy:
|
||||||
condition: on-failure
|
condition: on-failure
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
pytest==7.2.2
|
pytest==7.4.0
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue