Alors plusieurs solutions, soit tu ouvres un volume pour placer ton cache PNPM https://docs.docker.com/storage/volumes
Soit la meilleure pratique c'est bien de passer par un Dockerfile qui fait un premier build puis le passe à un deuxième docker que tu utiliseras, ça a aussi l'avantage d'alléger ton container (vu que node_modules ça dégage :p)
et c'est pas compliqué:
FROM node:lts as build
WORKDIR /app
ADD ./:/
RUN npm i -g pnpm && pnpm install && pnpm build && rm -rf node_modules
FROM node:lts # Quand tu fais un deuxième FROM, le premier reste de coté le temps de build ton container puis sera supprimé
COPY --from=build /app:/app
...
Avec cette config il n'y a plus de probleme de pnpm, tu aura dans ton container un js déjà compilé, pas de node_mudules, tout sera dans un app.js :p
Après pour le soucis de Cyberpanel... ok si vraiment y a pas moyen d'utiliser docker compose alors la seule solution est de faire un OS Docker :/
FROM node:lts as js
# Ici tu place ton js, package(-lock).json, et un dist, tu utilises pnpm pour build le JS dans un fichier app.js, et c'est tout
FROM strapi:latest as backend
# Ici tu installes composer et tu build ton back strapi
FROM ubuntu:latest
RUN apt get upgrade && apt get # Tu installes toutes les dépendances, comme nodejs, build-essentials, etc... y a plein de pilotes à installer :p
WORKDIR /app
COPY ./ /app
COPY --from=js /dist/app.js /app/assets/js/app.js # enfin tu copies ton fichier js la ou il doit se trouver dans ton projet
COPY --from=backend /var/lib/mysql /var/lib/mysql # si tu utilises mysql
COPY --from=backend # et si y a d'autres fichiers ou dossier à copier depuis ton build backlend vers ta VM ubuntu faut les copier aussi
Bref, sans docker compose faut utiliser docker comme une VM, tu fais des container node strapi etc, tu build ce dont tu as besoin, et le dernier from ce sera un OS complet comme ubuntu ou debian ^^'
Sinon si t'es ouvert à l'idée de changer d'hébergeur, je te conseilles AWS, tu fou ton docker compose sur EC2; et c'est plié (important, ne fait RIEN depuis le panel, utilises Terraform, sinon tu vas le regretter :p) :)