Un outil pour analyser une image Docker et proposer des outils pour l'optimiser.
Via https://korben.info/explorer-optimiser-images-docker-avec-dive.html
Définir des limites de mémoire et de CPU à un container Docker.
En ligne de commande:
docker run -m 512m --memory-reservation=256m --cpus=2 nginx
Avec Docker Compose:
service:
image: nginx
mem_limit: 512m
mem_reservation: 128m
cpus: 0.5
ports:
- "80:80"
Des bonnes pratiques à adopter pour créer des images Docker de vos apps Node.js.
Enfin des images Docker PHPUnit dignes de ce nom et à jour !
Quelques instructions pour améliorer vos Dockerfile pour Node.js.
# Utiliser une version de Node spécifique pour éviter les surprises lors de nouvelles releases.
FROM node:19.4-alpine
# Configurer Node pour la production.
ENV NODE_ENV production
# Sélectionner un répertoire de travail explicitement.
WORKDIR /usr/src/app
# Copier uniquement les fichiers requis pour installer les dépendances pour une meilleure gestion du cache.
COPY package*.json ./
# Installer uniquement les dépendances de production.
RUN npm ci --only=production
# alternative pour bénéficier du cache :
RUN --mount=type=cache,target=/usr/src/app/.npm \
npm set cache /usr/src/app/.npm && \
npm ci --only=production
# Éviter le mode root.
USER node
# Copier le reste du code source (uniquement les fichiers indispensables) après installation des dépendances.
COPY --chown=node:node ./src/ .
# Indiquer explicitement le port exposé par les containers qui utilisent cette image.
EXPOSE 3000
CMD ["node", "index.js"]
Au taf, on utilise Redhat. On utilise aussi Docker. Et hier un admin server m'a appris que Kubernetes et Redhat 8 vont arrêter de supporter officiellement Docker au profit de Podman. Ça remet en question les fondations de la façon dont on développe et dont on expose nos applications, donc j'étais un peu comme ça 😱
Du coup, voici un bon article qui détaille les différences entre Docker et Podman.
Un outil pour gérer Docker dans le terminal.
Via https://korben.info/interface-docker-docker-compose.html
Un Dockerfile simple pour créer une image Docker d'application Node.js qui permet de faire des requêtes sur DB Oracle (il faut aller voir l'update 3 en bas de la page pour la version la plus pertinente).
Il manque juste wget. Je copie colle ma version très légèrement modifiée ci-dessous :
FROM node:16-buster-slim
WORKDIR /tmp
RUN apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade && apt-get install -y alien libaio1 wget
RUN wget https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.3-basiclite-19.3.0.0.0-1.x86_64.rpm
RUN alien -i --scripts oracle-instantclient*.rpm
RUN rm -f oracle-instantclient19.3*.rpm && apt-get -y autoremove && apt-get -y clean
WORKDIR /myapp
ADD package.json /myapp/
ADD index.js /myapp/
RUN npm install
CMD exec node index.js
Faire tourner MacOS graphiquement dans Docker. Pas essayé mais c'est assez impressionnant.
Un topo sur Docker Compose.
Une très bonne introduction à Docker pour qui ne s'est pas encore jeté dans cet univers.
Une référence qui détaille ce qu'il y a à savoir sur les Dockerfiles.
Un environnement de développement pour Vue, Express Node MongoDB avec Docker.
Une "alternative" (même si le terme n'est pas approprié) à Docker.
Un article détaillé sur Docker, avec comme exemple une appli nginx / PHP / MySQL.