Je suis en train d'utiliser docker
et docker-compose
pour mettre en place un pipeline de construction. J'ai un front-end écrit en javascript qui doit être construit avant d'être utilisé. Le backend est écrit en go
.
Pour que ce composant s'intègre avec le reste de notre configuration docker-compose
, je veux également effectuer la construction dans une image docker.
Voici le processus que je suis en train de suivre :
- pendant la construction :
- construire les éléments du front-end et les placer dans
/output
(qui est lié au volumeoutput
- construire le serveur backend
- construire les éléments du front-end et les placer dans
- lors de l'exécution :
- exécuter le serveur, il a accès aux fichiers construits dans
/output
- exécuter le serveur, il a accès aux fichiers construits dans
Je suis assez novice en docker
et docker-compose
donc je ne suis pas sûr que cela est possible, ou même la bonne chose à faire.
Pour référence, voici mon docker-compose.yml
:
version: '2'
volumes:
output:
driver: local
services:
frontend:
build: .
volumes:
- output:/output
backend:
build: ./backend
depends_on:
- frontend
volumes:
- output:/output
et Dockerfile
:
FROM node
# créer le répertoire de travail
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ADD package.json /usr/src/app/package.json
# installer les paquets
RUN npm install
COPY . /usr/src/app
# construire les fichiers front-end et placer les résultats dans /output
RUN npm build
RUN cp /usr/src/app/build/* /output
Et backend/Dockerfile
:
FROM go
# copier et construire le serveur
COPY . /usr/src/backend
WORKDIR /usr/src/backend
RUN go build
# exécuter le serveur
ENTRYPOINT ["/usr/src/backend/main"]
Il y a quelque chose qui ne va pas ici, mais je ne sais pas quoi. Il semble que la sortie de l'étape de construction ne soit pas persistée dans le volume output
. Que puis-je faire pour résoudre ce problème ?