J'ai enfin commencé à apprendre Docker, je vais donc résumer ma compréhension.
Lancez un conteneur qui exécute express dans node.js. Je l'ai fait avec docker-compose.
cd ~
mkdir sample && cd sample
yarn init -y
yarn add express
touch index.js
index.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello').status(200);
});
app.listen(3000, () => {
console.log('Listening on port 3000');
});
node index.js
Bien sûr, si vous appuyez sur la commande curl localement, vous obtiendrez une réponse.
curl http://localhost:3000
Hello
Pour le moment, je tracerai la situation actuelle. Pour le moment.
Pour créer une image docker de node.js voir ici. Cette fois, c'est une copie. Créez le Dockerfile suivant directement sous le répertoire d'exemple.
Dockerfile
FROM node:alpine
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
# package.Je ne veux pas faire l'installation de npm après avoir copié json à chaque fois que je construis.
#Par conséquent, après avoir terminé ce qui précède, COPY. .Fais le.
#Ensuite, la construction ne sera exécutée que pour la partie où le code est modifié.
EXPOSE 3000
CMD [ "node", "index.js" ]
Et comme c'est douloureux si node_modules est également copié, créez également .dockerignore
.
touch .dockerignore
echo 'node_modules' >> .dockerignore
À propos, si vous venez jusque-là, vous n'avez pas à utiliser docker-compose séparément.
docker build -t app .
docker run -p 3000:3000 app
Si vous le faites, le conteneur démarrera. Cette fois, au lieu d'utiliser la commande ci-dessus, lancez le conteneur avec docker-compose.
Créez le fichier docker-compose.yml suivant directement sous le répertoire exemple.
docker-compose.yml
version: '3'
#Spécifiez 3 sans penser à rien
services:
#Décrivez les informations sur le conteneur. En écrivant plusieurs informations de conteneur ici, vous pouvez démarrer plusieurs conteneurs en même temps.
app:
#Lancez un conteneur appelé app (avec un espace de noms DNS).
build:
#Les informations au moment de la construction sont décrites ici. Si vous avez un Dockerfile, vous pouvez vous y référer, sinon écrivez-le directement ici.
context: .
#Ce docker au moment de la construction-compose.Même répertoire que yml (.) Reportez-vous au Dockerfile.
#S'il y a plusieurs Dockerfiles, vous devez séparer les répertoires et les spécifier dans leur contexte, ou spécifier leurs noms comme docokerfile: XXX.
container_name: express-app
#Donnez-lui un nom de conteneur arbitraire. Vous pouvez utiliser ce nom de conteneur pour accéder au conteneur avec la commande suivante
# docker exec -it express-app sh
ports:
- '3000:3000'
# docker run -p 3000:Cela signifie la même chose que 3000.
volumes:
- './:usr/src/app'
#Répertoire actuel du PC local (./) Et le conteneur~/usr/src/Synchronisez le répertoire des applications
#Aussi pratique pour le développement.
docker-compose up
lancera le conteneur.
Si vous tapez la commande curl depuis votre PC local, vous obtiendrez une réponse du conteneur. Comme le montre la première figure.
curl http://localhost:3000
Hello
Faites docker-compose down
pour arrêter le conteneur. Si vous réécrivez le contenu de ʻindex.js, reconstruisez-le avec
docker-compose build`.
De plus, si vous faites docker-compose up -d
, le conteneur démarrera en arrière-plan, mais pour le moment, il est difficile de voir le console.log
dans le conteneur, donc j'aime le premier plan.
J'ai résumé les bases pendant les bases. Merci beaucoup.
Recommended Posts