mirror of
https://github.com/frappe/frappe_docker.git
synced 2026-06-23 00:05:09 +00:00
commit
1d1d9c6e4a
10 changed files with 294 additions and 107 deletions
6
.github/workflows/docker-build-push.yml
vendored
6
.github/workflows/docker-build-push.yml
vendored
|
|
@ -67,7 +67,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
env:
|
env:
|
||||||
REGISTRY_USER: localhost:5000/frappe
|
REGISTRY_USER: zapal
|
||||||
|
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
|
|
@ -86,8 +86,8 @@ jobs:
|
||||||
if: ${{ inputs.push }}
|
if: ${{ inputs.push }}
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKER_TOKEN }}
|
||||||
|
|
||||||
- name: Push
|
- name: Push
|
||||||
if: ${{ inputs.push }}
|
if: ${{ inputs.push }}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ x-depends-on-configurator: &depends_on_configurator
|
||||||
x-backend-defaults: &backend_defaults
|
x-backend-defaults: &backend_defaults
|
||||||
<<: [*depends_on_configurator, *customizable_image]
|
<<: [*depends_on_configurator, *customizable_image]
|
||||||
volumes:
|
volumes:
|
||||||
- erp-bench:/home/zapal/frappe-bench
|
- erp-bench:/home/frappe/frappe-bench
|
||||||
|
|
||||||
services:
|
services:
|
||||||
configurator:
|
configurator:
|
||||||
|
|
@ -59,7 +59,7 @@ services:
|
||||||
PROXY_READ_TIMEOUT: ${PROXY_READ_TIMEOUT:-120}
|
PROXY_READ_TIMEOUT: ${PROXY_READ_TIMEOUT:-120}
|
||||||
CLIENT_MAX_BODY_SIZE: ${CLIENT_MAX_BODY_SIZE:-50m}
|
CLIENT_MAX_BODY_SIZE: ${CLIENT_MAX_BODY_SIZE:-50m}
|
||||||
volumes:
|
volumes:
|
||||||
- erp-bench:/home/zapal/frappe-bench
|
- erp-bench:/home/frappe/frappe-bench
|
||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- backend
|
||||||
- websocket
|
- websocket
|
||||||
|
|
@ -69,9 +69,9 @@ services:
|
||||||
platform: linux/amd64
|
platform: linux/amd64
|
||||||
command:
|
command:
|
||||||
- node
|
- node
|
||||||
- /home/zapal/frappe-bench/apps/frappe/socketio.js
|
- /home/frappe/frappe-bench/apps/frappe/socketio.js
|
||||||
volumes:
|
volumes:
|
||||||
- erp-bench:/home/zapal/frappe-bench
|
- erp-bench:/home/frappe/frappe-bench
|
||||||
|
|
||||||
queue-short:
|
queue-short:
|
||||||
<<: *backend_defaults
|
<<: *backend_defaults
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,11 @@
|
||||||
"branch": "version-15"
|
"branch": "version-15"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "https://github.com/zapal-tech/erp-insights.git",
|
"url": "https://github.com/zapal-tech/erp-crm.git",
|
||||||
"branch": "develop"
|
"branch": "develop"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/zapal-tech/erp-insights.git",
|
||||||
|
"branch": "version-3"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,10 @@ variable "HRMS_VERSION" {
|
||||||
default = "version-15"
|
default = "version-15"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "CRM_VERSION" {
|
||||||
|
default = "develop"
|
||||||
|
}
|
||||||
|
|
||||||
variable "INSIGHTS_VERSION" {
|
variable "INSIGHTS_VERSION" {
|
||||||
default = "version-3"
|
default = "version-3"
|
||||||
}
|
}
|
||||||
|
|
@ -41,6 +45,10 @@ variable "INSIGHTS_REPO" {
|
||||||
default = "https://github.com/zapal-tech/erp-insights"
|
default = "https://github.com/zapal-tech/erp-insights"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "CRM_REPO" {
|
||||||
|
default = "https://github.com/zapal-tech/erp-crm"
|
||||||
|
}
|
||||||
|
|
||||||
variable "BENCH_REPO" {
|
variable "BENCH_REPO" {
|
||||||
default = "https://github.com/frappe/bench"
|
default = "https://github.com/frappe/bench"
|
||||||
}
|
}
|
||||||
|
|
@ -92,14 +100,17 @@ target "default-args" {
|
||||||
ERPNEXT_REPO = "${ERPNEXT_REPO}"
|
ERPNEXT_REPO = "${ERPNEXT_REPO}"
|
||||||
HRMS_REPO = "${HRMS_REPO}"
|
HRMS_REPO = "${HRMS_REPO}"
|
||||||
INSIGHTS_REPO = "${INSIGHTS_REPO}"
|
INSIGHTS_REPO = "${INSIGHTS_REPO}"
|
||||||
|
CRM_REPO = "${CRM_REPO}"
|
||||||
BENCH_REPO = "${BENCH_REPO}"
|
BENCH_REPO = "${BENCH_REPO}"
|
||||||
FRAPPE_BRANCH = "${FRAPPE_VERSION}"
|
FRAPPE_BRANCH = "${FRAPPE_VERSION}"
|
||||||
ERPNEXT_BRANCH = "${ERPNEXT_VERSION}"
|
ERPNEXT_BRANCH = "${ERPNEXT_VERSION}"
|
||||||
HRMS_BRANCH = "${HRMS_VERSION}"
|
HRMS_BRANCH = "${HRMS_VERSION}"
|
||||||
INSIGHTS_BRANCH = "${INSIGHTS_VERSION}"
|
INSIGHTS_BRANCH = "${INSIGHTS_VERSION}"
|
||||||
|
CRM_BRANCH = "${CRM_VERSION}"
|
||||||
PYTHON_VERSION = "${PYTHON_VERSION}"
|
PYTHON_VERSION = "${PYTHON_VERSION}"
|
||||||
NODE_VERSION = "${NODE_VERSION}"
|
NODE_VERSION = "${NODE_VERSION}"
|
||||||
}
|
}
|
||||||
|
platforms = ["linux/amd64", "linux/arm64"]
|
||||||
}
|
}
|
||||||
|
|
||||||
target "erpnext" {
|
target "erpnext" {
|
||||||
|
|
|
||||||
171
docker-compose-no-dbs.yml
Normal file
171
docker-compose-no-dbs.yml
Normal file
|
|
@ -0,0 +1,171 @@
|
||||||
|
name: erp
|
||||||
|
services:
|
||||||
|
backend:
|
||||||
|
depends_on:
|
||||||
|
configurator:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
required: true
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
networks:
|
||||||
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: erp-bench
|
||||||
|
target: /home/frappe/frappe-bench
|
||||||
|
volume: {}
|
||||||
|
configurator:
|
||||||
|
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_QUEUE"; bench set-config -gp socketio_port $$SOCKETIO_PORT;
|
||||||
|
entrypoint:
|
||||||
|
- bash
|
||||||
|
- -c
|
||||||
|
environment:
|
||||||
|
DB_HOST: ""
|
||||||
|
DB_PORT: ""
|
||||||
|
REDIS_CACHE: ""
|
||||||
|
REDIS_QUEUE: ""
|
||||||
|
SOCKETIO_PORT: "9000"
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
networks:
|
||||||
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: erp-bench
|
||||||
|
target: /home/frappe/frappe-bench
|
||||||
|
volume: {}
|
||||||
|
frontend:
|
||||||
|
command:
|
||||||
|
- nginx-entrypoint.sh
|
||||||
|
depends_on:
|
||||||
|
backend:
|
||||||
|
condition: service_started
|
||||||
|
required: true
|
||||||
|
websocket:
|
||||||
|
condition: service_started
|
||||||
|
required: true
|
||||||
|
environment:
|
||||||
|
BACKEND: backend:8000
|
||||||
|
CLIENT_MAX_BODY_SIZE: 50m
|
||||||
|
FRAPPE_SITE_NAME_HEADER: $$host
|
||||||
|
PROXY_READ_TIMEOUT: "120"
|
||||||
|
SOCKETIO: websocket:9000
|
||||||
|
UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1
|
||||||
|
UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
|
||||||
|
UPSTREAM_REAL_IP_RECURSIVE: "off"
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
networks:
|
||||||
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
ports:
|
||||||
|
- mode: ingress
|
||||||
|
target: 8080
|
||||||
|
published: "8080"
|
||||||
|
protocol: tcp
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: erp-bench
|
||||||
|
target: /home/frappe/frappe-bench
|
||||||
|
volume: {}
|
||||||
|
queue-long:
|
||||||
|
command:
|
||||||
|
- bench
|
||||||
|
- worker
|
||||||
|
- --queue
|
||||||
|
- long,default,short
|
||||||
|
depends_on:
|
||||||
|
configurator:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
required: true
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
networks:
|
||||||
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: erp-bench
|
||||||
|
target: /home/frappe/frappe-bench
|
||||||
|
volume: {}
|
||||||
|
queue-short:
|
||||||
|
command:
|
||||||
|
- bench
|
||||||
|
- worker
|
||||||
|
- --queue
|
||||||
|
- short,default
|
||||||
|
depends_on:
|
||||||
|
configurator:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
required: true
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
networks:
|
||||||
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: erp-bench
|
||||||
|
target: /home/frappe/frappe-bench
|
||||||
|
volume: {}
|
||||||
|
scheduler:
|
||||||
|
command:
|
||||||
|
- bench
|
||||||
|
- schedule
|
||||||
|
depends_on:
|
||||||
|
configurator:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
required: true
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
networks:
|
||||||
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: erp-bench
|
||||||
|
target: /home/frappe/frappe-bench
|
||||||
|
volume: {}
|
||||||
|
websocket:
|
||||||
|
command:
|
||||||
|
- node
|
||||||
|
- /home/frappe/frappe-bench/apps/frappe/socketio.js
|
||||||
|
depends_on:
|
||||||
|
configurator:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
required: true
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
networks:
|
||||||
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- type: volume
|
||||||
|
source: erp-bench
|
||||||
|
target: /home/frappe/frappe-bench
|
||||||
|
volume: {}
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: erp_default
|
||||||
|
volumes:
|
||||||
|
erp-bench:
|
||||||
|
name: erp_erp-bench
|
||||||
|
x-backend-defaults:
|
||||||
|
depends_on:
|
||||||
|
configurator:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
pull_policy: always
|
||||||
|
volumes:
|
||||||
|
- erp-bench:/home/frappe/frappe-bench
|
||||||
|
x-customizable-image:
|
||||||
|
image: zapal/erp:v15.12.2
|
||||||
|
pull_policy: always
|
||||||
|
x-depends-on-configurator:
|
||||||
|
depends_on:
|
||||||
|
configurator:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
@ -5,13 +5,15 @@ services:
|
||||||
configurator:
|
configurator:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
required: true
|
required: true
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
networks:
|
networks:
|
||||||
default: null
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
volumes:
|
volumes:
|
||||||
- type: volume
|
- type: volume
|
||||||
source: erp-bench
|
source: erp-bench
|
||||||
target: /home/zapal/frappe-bench
|
target: /home/frappe/frappe-bench
|
||||||
volume: {}
|
volume: {}
|
||||||
configurator:
|
configurator:
|
||||||
command:
|
command:
|
||||||
|
|
@ -36,13 +38,15 @@ services:
|
||||||
REDIS_CACHE: redis-cache:6379
|
REDIS_CACHE: redis-cache:6379
|
||||||
REDIS_QUEUE: redis-queue:6379
|
REDIS_QUEUE: redis-queue:6379
|
||||||
SOCKETIO_PORT: "9000"
|
SOCKETIO_PORT: "9000"
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
networks:
|
networks:
|
||||||
default: null
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
volumes:
|
volumes:
|
||||||
- type: volume
|
- type: volume
|
||||||
source: erp-bench
|
source: erp-bench
|
||||||
target: /home/zapal/frappe-bench
|
target: /home/frappe/frappe-bench
|
||||||
volume: {}
|
volume: {}
|
||||||
db:
|
db:
|
||||||
command:
|
command:
|
||||||
|
|
@ -57,7 +61,7 @@ services:
|
||||||
- CMD-SHELL
|
- CMD-SHELL
|
||||||
- mysqladmin ping -h localhost --password=123
|
- mysqladmin ping -h localhost --password=123
|
||||||
interval: 1s
|
interval: 1s
|
||||||
retries: 15
|
retries: 20
|
||||||
image: mariadb:10.6
|
image: mariadb:10.6
|
||||||
networks:
|
networks:
|
||||||
default: null
|
default: null
|
||||||
|
|
@ -85,18 +89,20 @@ 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"
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
networks:
|
networks:
|
||||||
default: null
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
ports:
|
ports:
|
||||||
- mode: ingress
|
- mode: ingress
|
||||||
target: 8080
|
target: 8080
|
||||||
published: "8080"
|
published: "8080"
|
||||||
protocol: tcp
|
protocol: tcp
|
||||||
|
pull_policy: always
|
||||||
volumes:
|
volumes:
|
||||||
- type: volume
|
- type: volume
|
||||||
source: erp-bench
|
source: erp-bench
|
||||||
target: /home/zapal/frappe-bench
|
target: /home/frappe/frappe-bench
|
||||||
volume: {}
|
volume: {}
|
||||||
queue-long:
|
queue-long:
|
||||||
command:
|
command:
|
||||||
|
|
@ -108,13 +114,15 @@ services:
|
||||||
configurator:
|
configurator:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
required: true
|
required: true
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
networks:
|
networks:
|
||||||
default: null
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
volumes:
|
volumes:
|
||||||
- type: volume
|
- type: volume
|
||||||
source: erp-bench
|
source: erp-bench
|
||||||
target: /home/zapal/frappe-bench
|
target: /home/frappe/frappe-bench
|
||||||
volume: {}
|
volume: {}
|
||||||
queue-short:
|
queue-short:
|
||||||
command:
|
command:
|
||||||
|
|
@ -126,13 +134,15 @@ services:
|
||||||
configurator:
|
configurator:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
required: true
|
required: true
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
networks:
|
networks:
|
||||||
default: null
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
volumes:
|
volumes:
|
||||||
- type: volume
|
- type: volume
|
||||||
source: erp-bench
|
source: erp-bench
|
||||||
target: /home/zapal/frappe-bench
|
target: /home/frappe/frappe-bench
|
||||||
volume: {}
|
volume: {}
|
||||||
redis-cache:
|
redis-cache:
|
||||||
image: redis:6.2-alpine
|
image: redis:6.2-alpine
|
||||||
|
|
@ -160,29 +170,33 @@ services:
|
||||||
configurator:
|
configurator:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
required: true
|
required: true
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
networks:
|
networks:
|
||||||
default: null
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
volumes:
|
volumes:
|
||||||
- type: volume
|
- type: volume
|
||||||
source: erp-bench
|
source: erp-bench
|
||||||
target: /home/zapal/frappe-bench
|
target: /home/frappe/frappe-bench
|
||||||
volume: {}
|
volume: {}
|
||||||
websocket:
|
websocket:
|
||||||
command:
|
command:
|
||||||
- node
|
- node
|
||||||
- /home/zapal/frappe-bench/apps/frappe/socketio.js
|
- /home/frappe/frappe-bench/apps/frappe/socketio.js
|
||||||
depends_on:
|
depends_on:
|
||||||
configurator:
|
configurator:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
required: true
|
required: true
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
networks:
|
networks:
|
||||||
default: null
|
default: null
|
||||||
|
platform: linux/amd64
|
||||||
|
pull_policy: always
|
||||||
volumes:
|
volumes:
|
||||||
- type: volume
|
- type: volume
|
||||||
source: erp-bench
|
source: erp-bench
|
||||||
target: /home/zapal/frappe-bench
|
target: /home/frappe/frappe-bench
|
||||||
volume: {}
|
volume: {}
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
|
|
@ -200,11 +214,13 @@ x-backend-defaults:
|
||||||
depends_on:
|
depends_on:
|
||||||
configurator:
|
configurator:
|
||||||
condition: service_completed_successfully
|
condition: service_completed_successfully
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
|
pull_policy: always
|
||||||
volumes:
|
volumes:
|
||||||
- erp-bench:/home/zapal/frappe-bench
|
- erp-bench:/home/frappe/frappe-bench
|
||||||
x-customizable-image:
|
x-customizable-image:
|
||||||
image: zapal/erp:latest
|
image: zapal/erp:v15.12.2
|
||||||
|
pull_policy: always
|
||||||
x-depends-on-configurator:
|
x-depends-on-configurator:
|
||||||
depends_on:
|
depends_on:
|
||||||
configurator:
|
configurator:
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,16 @@ ARG PYTHON_VERSION=3.11.6
|
||||||
ARG DEBIAN_BASE=bookworm
|
ARG DEBIAN_BASE=bookworm
|
||||||
FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base
|
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-3
|
ARG WKHTMLTOPDF_VERSION=0.12.6.1-3
|
||||||
ARG WKHTMLTOPDF_DISTRO=bookworm
|
ARG WKHTMLTOPDF_DISTRO=bookworm
|
||||||
ARG NODE_VERSION=18.18.2
|
ARG NODE_VERSION=18.18.2
|
||||||
ENV NVM_DIR=/home/zapal/.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 useradd -ms /bin/bash zapal \
|
RUN useradd -ms /bin/bash frappe \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install --no-install-recommends -y \
|
&& apt-get install --no-install-recommends -y \
|
||||||
curl \
|
curl \
|
||||||
|
|
@ -29,8 +32,8 @@ RUN useradd -ms /bin/bash zapal \
|
||||||
mariadb-client \
|
mariadb-client \
|
||||||
less \
|
less \
|
||||||
# Postgres
|
# Postgres
|
||||||
# libpq-dev \
|
libpq-dev \
|
||||||
# postgresql-client \
|
postgresql-client \
|
||||||
# For healthcheck
|
# For healthcheck
|
||||||
wait-for-it \
|
wait-for-it \
|
||||||
jq \
|
jq \
|
||||||
|
|
@ -43,9 +46,9 @@ RUN useradd -ms /bin/bash zapal \
|
||||||
&& npm install -g yarn \
|
&& npm install -g yarn \
|
||||||
&& nvm alias default v${NODE_VERSION} \
|
&& nvm alias default v${NODE_VERSION} \
|
||||||
&& rm -rf ${NVM_DIR}/.cache \
|
&& rm -rf ${NVM_DIR}/.cache \
|
||||||
&& echo 'export NVM_DIR="/home/zapal/.nvm"' >>/home/zapal/.bashrc \
|
&& echo 'export NVM_DIR="/home/frappe/.nvm"' >>/home/frappe/.bashrc \
|
||||||
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >>/home/zapal/.bashrc \
|
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >>/home/frappe/.bashrc \
|
||||||
&& echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >>/home/zapal/.bashrc \
|
&& echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >>/home/frappe/.bashrc \
|
||||||
# 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 \
|
||||||
|
|
@ -61,16 +64,13 @@ RUN useradd -ms /bin/bash zapal \
|
||||||
&& sed -i '/user www-data/d' /etc/nginx/nginx.conf \
|
&& sed -i '/user www-data/d' /etc/nginx/nginx.conf \
|
||||||
&& ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log \
|
&& ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log \
|
||||||
&& touch /run/nginx.pid \
|
&& touch /run/nginx.pid \
|
||||||
&& chown -R zapal:zapal /etc/nginx/conf.d \
|
&& chown -R frappe:frappe /etc/nginx/conf.d \
|
||||||
&& chown -R zapal:zapal /etc/nginx/nginx.conf \
|
&& chown -R frappe:frappe /etc/nginx/nginx.conf \
|
||||||
&& chown -R zapal:zapal /var/log/nginx \
|
&& chown -R frappe:frappe /var/log/nginx \
|
||||||
&& chown -R zapal:zapal /var/lib/nginx \
|
&& chown -R frappe:frappe /var/lib/nginx \
|
||||||
&& chown -R zapal:zapal /run/nginx.pid \
|
&& chown -R frappe:frappe /run/nginx.pid \
|
||||||
&& chmod 755 /usr/local/bin/nginx-entrypoint.sh \
|
&& chmod 755 /usr/local/bin/nginx-entrypoint.sh \
|
||||||
&& chmod 644 /templates/nginx/erp.conf.template
|
&& chmod 644 /templates/nginx/frappe.conf.template
|
||||||
|
|
||||||
COPY resources/nginx-template.conf /templates/nginx/erp.conf.template
|
|
||||||
COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh
|
|
||||||
|
|
||||||
FROM base AS builder
|
FROM base AS builder
|
||||||
|
|
||||||
|
|
@ -110,16 +110,10 @@ RUN if [ -n "${APPS_JSON_BASE64}" ]; then \
|
||||||
mkdir /opt/frappe && echo "${APPS_JSON_BASE64}" | base64 -d > /opt/frappe/apps.json; \
|
mkdir /opt/frappe && echo "${APPS_JSON_BASE64}" | base64 -d > /opt/frappe/apps.json; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
USER zapal
|
USER frappe
|
||||||
|
|
||||||
ARG FRAPPE_BRANCH=version-15
|
ARG FRAPPE_BRANCH=version-15
|
||||||
ARG FRAPPE_PATH=https://github.com/zapal-tech/erp-frappe
|
ARG FRAPPE_PATH=https://github.com/zapal-tech/erp-frappe
|
||||||
ARG ERPNEXT_REPO=https://github.com/zapal-tech/erp-erpnext
|
|
||||||
ARG ERPNEXT_BRANCH=version-15
|
|
||||||
ARG HRMS_REPO=https://github.com/zapal-tech/erp-hrms
|
|
||||||
ARG HRMS_BRANCH=version-15
|
|
||||||
ARG INSIGHTS_REPO=https://github.com/zapal-tech/erp-insights
|
|
||||||
ARG INSIGHTS_BRANCH=version-3
|
|
||||||
|
|
||||||
RUN export APP_INSTALL_ARGS="" && \
|
RUN export APP_INSTALL_ARGS="" && \
|
||||||
if [ -n "${APPS_JSON_BASE64}" ]; then \
|
if [ -n "${APPS_JSON_BASE64}" ]; then \
|
||||||
|
|
@ -132,37 +126,28 @@ RUN export APP_INSTALL_ARGS="" && \
|
||||||
--no-backups \
|
--no-backups \
|
||||||
--skip-redis-config-generation \
|
--skip-redis-config-generation \
|
||||||
--verbose \
|
--verbose \
|
||||||
/home/zapal/frappe-bench && \
|
/home/frappe/frappe-bench && \
|
||||||
cd /home/zapal/frappe-bench && \
|
cd /home/frappe/frappe-bench && \
|
||||||
echo "frappe\nhrms\nerpnext" > sites/apps.txt
|
|
||||||
echo "{}" > sites/common_site_config.json && \
|
echo "{}" > sites/common_site_config.json && \
|
||||||
find apps -mindepth 1 -path "*/.git" | xargs rm -fr
|
find apps -mindepth 1 -path "*/.git" | xargs rm -fr
|
||||||
|
|
||||||
WORKDIR /home/zapal/frappe-bench
|
|
||||||
|
|
||||||
RUN bench get-app --branch=${ERPNEXT_BRANCH} --resolve-deps erpnext ${ERPNEXT_REPO}
|
|
||||||
RUN bench get-app --branch=${HRMS_BRANCH} --resolve-deps hrms ${HRMS_REPO}
|
|
||||||
RUN bench get-app --branch=${INSIGHTS_BRANCH} --resolve-deps insights ${INSIGHTS_REPO}
|
|
||||||
|
|
||||||
FROM base as backend
|
FROM base as backend
|
||||||
|
|
||||||
USER zapal
|
USER frappe
|
||||||
|
|
||||||
COPY --from=builder --chown=zapal:zapal /home/zapal/frappe-bench /home/zapal/frappe-bench
|
COPY --from=builder --chown=frappe:frappe /home/frappe/frappe-bench /home/frappe/frappe-bench
|
||||||
COPY /templates/nginx/erp.conf.template /templates/nginx/erp.conf.template
|
|
||||||
COPY /usr/local/bin/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh
|
|
||||||
|
|
||||||
WORKDIR /home/zapal/frappe-bench
|
WORKDIR /home/frappe/frappe-bench
|
||||||
|
|
||||||
VOLUME [ \
|
VOLUME [ \
|
||||||
"/home/zapal/frappe-bench/sites", \
|
"/home/frappe/frappe-bench/sites", \
|
||||||
"/home/zapal/frappe-bench/sites/assets", \
|
"/home/frappe/frappe-bench/sites/assets", \
|
||||||
"/home/zapal/frappe-bench/logs" \
|
"/home/frappe/frappe-bench/logs" \
|
||||||
]
|
]
|
||||||
|
|
||||||
CMD [ \
|
CMD [ \
|
||||||
"/home/zapal/frappe-bench/env/bin/gunicorn", \
|
"/home/frappe/frappe-bench/env/bin/gunicorn", \
|
||||||
"--chdir=/home/zapal/frappe-bench/sites", \
|
"--chdir=/home/frappe/frappe-bench/sites", \
|
||||||
"--bind=0.0.0.0:8000", \
|
"--bind=0.0.0.0:8000", \
|
||||||
"--threads=4", \
|
"--threads=4", \
|
||||||
"--workers=2", \
|
"--workers=2", \
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,10 @@ FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base
|
||||||
ARG WKHTMLTOPDF_VERSION=0.12.6.1-3
|
ARG WKHTMLTOPDF_VERSION=0.12.6.1-3
|
||||||
ARG WKHTMLTOPDF_DISTRO=bookworm
|
ARG WKHTMLTOPDF_DISTRO=bookworm
|
||||||
ARG NODE_VERSION=18.18.2
|
ARG NODE_VERSION=18.18.2
|
||||||
ENV NVM_DIR=/home/zapal/.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}
|
||||||
|
|
||||||
COPY resources/nginx-template.conf /templates/nginx/erp.conf.template
|
RUN useradd -ms /bin/bash frappe \
|
||||||
COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh
|
|
||||||
|
|
||||||
RUN useradd -ms /bin/bash zapal \
|
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install --no-install-recommends -y \
|
&& apt-get install --no-install-recommends -y \
|
||||||
curl \
|
curl \
|
||||||
|
|
@ -32,8 +29,8 @@ RUN useradd -ms /bin/bash zapal \
|
||||||
mariadb-client \
|
mariadb-client \
|
||||||
less \
|
less \
|
||||||
# Postgres
|
# Postgres
|
||||||
# libpq-dev \
|
libpq-dev \
|
||||||
# postgresql-client \
|
postgresql-client \
|
||||||
# For healthcheck
|
# For healthcheck
|
||||||
wait-for-it \
|
wait-for-it \
|
||||||
jq \
|
jq \
|
||||||
|
|
@ -46,9 +43,9 @@ RUN useradd -ms /bin/bash zapal \
|
||||||
&& npm install -g yarn \
|
&& npm install -g yarn \
|
||||||
&& nvm alias default v${NODE_VERSION} \
|
&& nvm alias default v${NODE_VERSION} \
|
||||||
&& rm -rf ${NVM_DIR}/.cache \
|
&& rm -rf ${NVM_DIR}/.cache \
|
||||||
&& echo 'export NVM_DIR="/home/zapal/.nvm"' >>/home/zapal/.bashrc \
|
&& echo 'export NVM_DIR="/home/frappe/.nvm"' >>/home/frappe/.bashrc \
|
||||||
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >>/home/zapal/.bashrc \
|
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' >>/home/frappe/.bashrc \
|
||||||
&& echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >>/home/zapal/.bashrc \
|
&& echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion' >>/home/frappe/.bashrc \
|
||||||
# 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 \
|
||||||
|
|
@ -64,13 +61,14 @@ RUN useradd -ms /bin/bash zapal \
|
||||||
&& sed -i '/user www-data/d' /etc/nginx/nginx.conf \
|
&& sed -i '/user www-data/d' /etc/nginx/nginx.conf \
|
||||||
&& ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log \
|
&& ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log \
|
||||||
&& touch /run/nginx.pid \
|
&& touch /run/nginx.pid \
|
||||||
&& chown -R zapal:zapal /etc/nginx/conf.d \
|
&& chown -R frappe:frappe /etc/nginx/conf.d \
|
||||||
&& chown -R zapal:zapal /etc/nginx/nginx.conf \
|
&& chown -R frappe:frappe /etc/nginx/nginx.conf \
|
||||||
&& chown -R zapal:zapal /var/log/nginx \
|
&& chown -R frappe:frappe /var/log/nginx \
|
||||||
&& chown -R zapal:zapal /var/lib/nginx \
|
&& chown -R frappe:frappe /var/lib/nginx \
|
||||||
&& chown -R zapal:zapal /run/nginx.pid \
|
&& chown -R frappe:frappe /run/nginx.pid
|
||||||
&& chmod 755 /usr/local/bin/nginx-entrypoint.sh \
|
|
||||||
&& chmod 644 /templates/nginx/erp.conf.template
|
COPY resources/nginx-template.conf /templates/nginx/frappe.conf.template
|
||||||
|
COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh
|
||||||
|
|
||||||
FROM base AS build
|
FROM base AS build
|
||||||
|
|
||||||
|
|
@ -98,7 +96,7 @@ RUN apt-get update \
|
||||||
libbz2-dev \
|
libbz2-dev \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
USER zapal
|
USER frappe
|
||||||
|
|
||||||
FROM build AS builder
|
FROM build AS builder
|
||||||
|
|
||||||
|
|
@ -106,6 +104,8 @@ ARG FRAPPE_BRANCH=version-15
|
||||||
ARG FRAPPE_PATH=https://github.com/zapal-tech/erp-frappe
|
ARG FRAPPE_PATH=https://github.com/zapal-tech/erp-frappe
|
||||||
ARG ERPNEXT_REPO=https://github.com/zapal-tech/erp-erpnext
|
ARG ERPNEXT_REPO=https://github.com/zapal-tech/erp-erpnext
|
||||||
ARG ERPNEXT_BRANCH=version-15
|
ARG ERPNEXT_BRANCH=version-15
|
||||||
|
ARG CRM_REPO=https://github.com/zapal-tech/erp-crm
|
||||||
|
ARG CRM_BRANCH=develop
|
||||||
ARG HRMS_REPO=https://github.com/zapal-tech/erp-hrms
|
ARG HRMS_REPO=https://github.com/zapal-tech/erp-hrms
|
||||||
ARG HRMS_BRANCH=version-15
|
ARG HRMS_BRANCH=version-15
|
||||||
ARG INSIGHTS_REPO=https://github.com/zapal-tech/erp-insights
|
ARG INSIGHTS_REPO=https://github.com/zapal-tech/erp-insights
|
||||||
|
|
@ -118,35 +118,34 @@ RUN bench init \
|
||||||
--no-backups \
|
--no-backups \
|
||||||
--skip-redis-config-generation \
|
--skip-redis-config-generation \
|
||||||
--verbose \
|
--verbose \
|
||||||
/home/zapal/frappe-bench && \
|
/home/frappe/frappe-bench && \
|
||||||
cd /home/zapal/frappe-bench && \
|
cd /home/frappe/frappe-bench && \
|
||||||
echo "frappe\nhrms\nerpnext" > sites/apps.txt && \
|
bench get-app --branch=${ERPNEXT_BRANCH} --resolve-deps erpnext ${ERPNEXT_REPO} && \
|
||||||
echo '{"socketio_port": 9000}' > sites/common_site_config.json && \
|
bench get-app --branch=${CRM_BRANCH} --resolve-deps crm ${CRM_REPO} && \
|
||||||
|
bench get-app --branch=${HRMS_BRANCH} --resolve-deps hrms ${HRMS_REPO} && \
|
||||||
|
bench get-app --branch=${INSIGHTS_BRANCH} --resolve-deps insights ${INSIGHTS_REPO} && \
|
||||||
|
echo "{}" > sites/common_site_config.json && \
|
||||||
find apps -mindepth 1 -path "*/.git" | xargs rm -fr
|
find apps -mindepth 1 -path "*/.git" | xargs rm -fr
|
||||||
|
|
||||||
FROM builder AS erpnext
|
FROM base AS erpnext
|
||||||
|
|
||||||
USER zapal
|
USER frappe
|
||||||
|
|
||||||
RUN cd /home/zapal/frappe-bench && bench get-app --branch=${ERPNEXT_BRANCH} --resolve-deps erpnext ${ERPNEXT_REPO}
|
|
||||||
RUN cd /home/zapal/frappe-bench && bench get-app --branch=${HRMS_BRANCH} --resolve-deps hrms ${HRMS_REPO}
|
|
||||||
RUN cd /home/zapal/frappe-bench && bench get-app --branch=${INSIGHTS_BRANCH} --resolve-deps insights ${INSIGHTS_REPO}
|
|
||||||
|
|
||||||
RUN echo "echo \"Commands restricted in production container, Read FAQ before you proceed: https://frappe.fyi/ctr-faq\"" >> ~/.bashrc
|
RUN echo "echo \"Commands restricted in production container, Read FAQ before you proceed: https://frappe.fyi/ctr-faq\"" >> ~/.bashrc
|
||||||
|
|
||||||
COPY --from=builder --chown=zapal:zapal /home/zapal/frappe-bench /home/zapal/frappe-bench
|
COPY --from=builder --chown=frappe:frappe /home/frappe/frappe-bench /home/frappe/frappe-bench
|
||||||
|
|
||||||
WORKDIR /home/zapal/frappe-bench
|
WORKDIR /home/frappe/frappe-bench
|
||||||
|
|
||||||
VOLUME [ \
|
VOLUME [ \
|
||||||
"/home/zapal/frappe-bench/sites", \
|
"/home/frappe/frappe-bench/sites", \
|
||||||
"/home/zapal/frappe-bench/sites/assets", \
|
"/home/frappe/frappe-bench/sites/assets", \
|
||||||
"/home/zapal/frappe-bench/logs" \
|
"/home/frappe/frappe-bench/logs" \
|
||||||
]
|
]
|
||||||
|
|
||||||
CMD [ \
|
CMD [ \
|
||||||
"/home/zapal/frappe-bench/env/bin/gunicorn", \
|
"/home/frappe/frappe-bench/env/bin/gunicorn", \
|
||||||
"--chdir=/home/zapal/frappe-bench/sites", \
|
"--chdir=/home/frappe/frappe-bench/sites", \
|
||||||
"--bind=0.0.0.0:8000", \
|
"--bind=0.0.0.0:8000", \
|
||||||
"--threads=4", \
|
"--threads=4", \
|
||||||
"--workers=2", \
|
"--workers=2", \
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,6 @@ envsubst '${BACKEND}
|
||||||
${FRAPPE_SITE_NAME_HEADER}
|
${FRAPPE_SITE_NAME_HEADER}
|
||||||
${PROXY_READ_TIMEOUT}
|
${PROXY_READ_TIMEOUT}
|
||||||
${CLIENT_MAX_BODY_SIZE}' \
|
${CLIENT_MAX_BODY_SIZE}' \
|
||||||
</templates/nginx/erp.conf.template >/etc/nginx/conf.d/erp.conf
|
</templates/nginx/frappe.conf.template >/etc/nginx/conf.d/frappe.conf
|
||||||
|
|
||||||
nginx -g 'daemon off;'
|
nginx -g 'daemon off;'
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@ upstream socketio-server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 8080;
|
listen 8080;
|
||||||
root /home/zapal/frappe-bench/sites;
|
server_name ${FRAPPE_SITE_NAME_HEADER};
|
||||||
|
root /home/frappe/frappe-bench/sites;
|
||||||
|
|
||||||
proxy_buffer_size 128k;
|
proxy_buffer_size 128k;
|
||||||
proxy_buffers 4 256k;
|
proxy_buffers 4 256k;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue