Thanks for your answer.
I tried to change all the docker images as you suggested and followed your docs. My yaml docker compose file looks like this after direct migration.
name: erpnext-one
services:
backend:
depends_on:
configurator:
condition: service_completed_successfully
image: frappe/erpnext:v14.19.0
container_name: backend
networks:
bench-network: null
mariadb-network: null
volumes:
- type: volume
source: sites
target: /home/frappe/frappe-bench/sites
volume: {}
- type: volume
source: assets
target: /home/frappe/frappe-bench/sites/assets
read_only: true
volume: {}
configurator:
depends_on:
redis:
condition: service_started
environment:
DB_HOST: mariadb-database
DB_PORT: "3306"
REDIS_CACHE: redis:6379/0
REDIS_QUEUE: redis:6379/1
REDIS_SOCKETIO: redis:6379/2
SOCKETIO_PORT: "9000"
image: frappe/erpnext:v14.19.0
restart: "no"
entrypoint:
- bash
- -c
command:
- >
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;
networks:
bench-network: null
mariadb-network: null
volumes:
- type: volume
source: sites
target: /home/frappe/frappe-bench/sites
volume: {}
frontend:
depends_on:
backend:
condition: service_started
websocket:
condition: service_started
environment:
BACKEND: backend:8000
FRAPPE_SITE_NAME_HEADER: $$host
SOCKETIO: websocket:9000
UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1
UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
UPSTREAM_REAL_IP_RECURSIVE: "off"
image: frappe/erpnext:v14.19.0
command:
- nginx-entrypoint.sh
environment:
BACKEND: backend:8000
SOCKETIO: websocket:9000
labels:
traefik.docker.network: traefik-public
traefik.enable: "true"
traefik.http.routers.erpnext-one-http.entrypoints: http
traefik.http.routers.erpnext-one-http.middlewares: https-redirect
traefik.http.routers.erpnext-one-http.rule: Host(`me.bizsuite.pt`,`petvet.bizsuite.pt`)
traefik.http.routers.erpnext-one-http.service: erpnext-one
traefik.http.routers.erpnext-one-https.entrypoints: https
traefik.http.routers.erpnext-one-https.rule: Host(`me.bizsuite.pt`,`petvet.bizsuite.pt`)
traefik.http.routers.erpnext-one-https.service: erpnext-one
traefik.http.routers.erpnext-one-https.tls: "true"
traefik.http.routers.erpnext-one-https.tls.certresolver: le
traefik.http.services.erpnext-one.loadbalancer.server.port: "8080"
networks:
bench-network: null
traefik-public: null
volumes:
- type: volume
source: sites
target: /home/frappe/frappe-bench/sites
volume: {}
queue-default:
command:
- bench
- worker
- --queue
- default
depends_on:
configurator:
condition: service_completed_successfully
image: frappe/erpnext:v14.19.0
networks:
bench-network: null
mariadb-network: null
volumes:
- type: volume
source: sites
target: /home/frappe/frappe-bench/sites
volume: {}
queue-long:
command:
- bench
- worker
- --queue
- long
depends_on:
configurator:
condition: service_completed_successfully
image: frappe/erpnext:v14.19.0
networks:
bench-network: null
mariadb-network: null
volumes:
- type: volume
source: sites
target: /home/frappe/frappe-bench/sites
volume: {}
queue-short:
command:
- bench
- worker
- --queue
- short
depends_on:
configurator:
condition: service_completed_successfully
image: frappe/erpnext:v14.19.0
networks:
bench-network: null
volumes:
- type: volume
source: sites
target: /home/frappe/frappe-bench/sites
volume: {}
redis:
image: redis:6.2-alpine
networks:
bench-network: null
mariadb-network: null
volumes:
- type: volume
source: redis-data
target: /data
volume: {}
scheduler:
command:
- bench
- schedule
depends_on:
configurator:
condition: service_completed_successfully
image: frappe/erpnext:v14.19.0
networks:
bench-network: null
mariadb-network: null
volumes:
- type: volume
source: sites
target: /home/frappe/frappe-bench/sites
volume: {}
websocket:
depends_on:
configurator:
condition: service_completed_successfully
image: frappe/erpnext:v14.19.0
command:
- node
- /home/frappe/frappe-bench/apps/frappe/socketio.js
networks:
bench-network: null
mariadb-network: null
volumes:
- type: volume
source: sites
target: /home/frappe/frappe-bench/sites
volume: {}
networks:
bench-network:
name: erpnext-one
mariadb-network:
name: mariadb-network
external: true
traefik-public:
name: traefik-public
external: true
volumes:
assets:
name: erpnext-one_assets
redis-data:
name: erpnext-one_redis-data
sites:
name: erpnext-one_sites
x-backend-defaults:
depends_on:
configurator:
condition: service_completed_successfully
image: frappe/erpnext:v14.19.0
volumes:
- sites:/home/frappe/frappe-bench/sites
x-depends-on-configurator:
depends_on:
configurator:
condition: service_completed_successfully
x-erpnext-backend-image:
image: frappe/erpnext:v14.19.0
I rebuild all the conttainers using the following command:
docker compose -f erpnext-one.yaml up -d --build --force-recreate
But I get ** Internal Server Error **. Backend logs shows that I am missing payments module, but this wierd because my website was already running.
Traceback (most recent call last):
File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 271, in handle
keepalive = self.handle_request(req, conn)
File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 323, in handle_request
respiter = self.wsgi(environ, resp.start_response)
File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/werkzeug/local.py", line 237, in application
return ClosingIterator(app(environ, start_response), self.cleanup)
File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/werkzeug/wrappers/request.py", line 194, in application
resp = f(*args[:-2] + (request,))
File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 84, in application
response = handle_exception(e)
File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 324, in handle_exception
response = get_response("message", http_status_code=http_status_code)
File "/home/frappe/frappe-bench/apps/frappe/frappe/website/serve.py", line 27, in get_response
response = ErrorPage(exception=e).render()
File "/home/frappe/frappe-bench/apps/frappe/frappe/website/page_renderers/error_page.py", line 7, in __init__
super().__init__(path=path, http_status_code=http_status_code)
File "/home/frappe/frappe-bench/apps/frappe/frappe/website/page_renderers/template_page.py", line 45, in __init__
self.set_template_path()
File "/home/frappe/frappe-bench/apps/frappe/frappe/website/page_renderers/template_page.py", line 54, in set_template_path
app_path = frappe.get_app_path(app)
File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 1356, in get_app_path
return get_pymodule_path(app_name, *joins)
File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 1373, in get_pymodule_path
return os.path.join(os.path.dirname(get_module(scrub(modulename)).__file__ or ""), *joins)
File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 1327, in get_module
return importlib.import_module(modulename)
File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'payments'
I also tried to to install the payments module, but bench returns me that I already have the folder:
frappe@e8867c4980aa:~/frappe-bench$ bench get-app payments
A directory for the application 'payments' already exists. Do you want to continue and overwrite it? [y/N]:
Would you have some insights? I am tinkering with this, the only thing I made different from the tutorial was the sites:/home/frappe/frappe-bench/sites, but this is on Frontend. and if I try to force the payments installation, I get a permission error:
PermissionError: [Errno 13] Permission denied: './sites/apps.txt'