Tutorial ini menunjukkan kelebihan menggunakan bekas Docker untuk aplikasi Node.js dan menetapkan aliran kerja pembangunan yang cekap.
node.js memberi kuasa penciptaan aplikasi web yang cepat dan berskala menggunakan JavaScript pada kedua -dua pelayan dan klien. Walaupun aplikasi anda mungkin berfungsi dengan sempurna pada mesin pembangunan anda, prestasi yang konsisten di seluruh persekitaran yang berbeza (mesin rakan sekerja, pelayan pengeluaran) tidak dijamin. Pertimbangkan isu -isu yang berpotensi ini:
Manfaat Utama
Penyelesaian Docker
Docker berkesan menangani cabaran keserasian yang disebutkan di atas. Daripada memasang aplikasi secara langsung, anda menjalankannya di dalam persekitaran seperti mesin maya yang ringan dan terpencil yang dipanggil bekas.
Tidak seperti mesin maya yang mencontohi seluruh perkakasan dan sistem operasi PC, Docker memancarkan OS, yang membolehkan anda memasang aplikasi secara langsung. Amalan biasa untuk menjalankan satu aplikasi setiap bekas berasaskan Linux dan sambungkannya melalui rangkaian maya untuk komunikasi HTTP.
Kelebihannya banyak:
skrip node.js pertama anda
Pasang desktop Docker (Windows, MacOS, atau Linux). Buat skrip mudah bernama version.js
:
console.log(`Node.js version: ${process.version}`);
Jika node.js dipasang secara tempatan, jalankan untuk melihat versi. Sekarang, jalankan dalam bekas Docker (menggunakan versi LTS Node.js terkini):
(macOS/linux)
$ docker run --rm --name version -v $PWD:/home/node/app -w /home/node/app node:lts-alpine version.js
(Windows PowerShell)
> docker run --rm --name version -v ${PWD}:/home/node/app -w /home/node/app node:lts-alpine version.js
Larian pertama mungkin mengambil masa beberapa saat sebagai kebergantungan muat turun Docker. Larian seterusnya jauh lebih cepat. Anda boleh dengan mudah menukar versi Node.js (mis., node:21-alpine
Pecahan Perintah:
docker run
--rm
--name version
-v $PWD:/home/node/app
-w /home/node/app
node:lts-alpine
version.js
, :lts-alpine
, atau 20-bullseye-slim
. Alpine Linux adalah pengedaran ringan yang sesuai untuk projek mudah. latest
menjalankan aplikasi yang lebih kompleks
Untuk aplikasi dengan kebergantungan dan membina langkah -langkah (menggunakan npm), imej docker tersuai diperlukan. Contoh ini menggunakan Express.js:Buat direktori bernama
, tambah simple
: package.json
{ "name": "simple", "version": "1.0.0", "description": "simple Node.js and Docker example", "type": "module", "main": "index.js", "scripts": { "debug": "node --watch --inspect=0.0.0.0:9229 index.js", "start": "node index.js" }, "license": "MIT", "dependencies": { "express": "^4.18.2" } }
index.js
// Express application import express from 'express'; // configuration const cfg = { port: process.env.PORT || 3000 }; // initialize Express const app = express(); // home page route app.get('/:name?', (req, res) => { res.send(`Hello ${req.params.name || 'World'}!`); }); // start server app.listen(cfg.port, () => { console.log(`server listening at http://localhost:${cfg.port}`); });
Dockerfile
# base Node.js LTS image FROM node:lts-alpine # define environment variables ENV HOME=/home/node/app ENV NODE_ENV=production ENV NODE_PORT=3000 # create application folder and assign rights to the node user RUN mkdir -p $HOME && chown -R node:node $HOME # set the working directory WORKDIR $HOME # set the active user USER node # copy package.json from the host COPY --chown=node:node package.json $HOME/ # install application modules RUN npm install && npm cache clean --force # copy remaining files COPY --chown=node:node . . # expose port on the host EXPOSE $NODE_PORT # application launch command CMD [ "node", "./index.js" ]
docker image build -t simple .
Jalankan bekas:
docker run -it --rm --name simple -p 3000:3000 simple
mengakses aplikasi di
http://localhost:3000/
fail
.dockerignore
Kaedah sebelumnya tidak cekap untuk pembangunan. Docker Compose menyediakan penyelesaian yang lebih baik. Buat
:
docker-compose.yml
version: '3' services: simple: environment: - NODE_ENV=development build: context: ./ dockerfile: Dockerfile container_name: simple volumes: - ./:/home/node/app ports: - "3000:3000" - "9229:9229" command: /bin/sh -c 'npm install && npm run debug'
mencetuskan restart automatik. Gunakan debugger vs kod (lampirkan ke port 9229) untuk debugging yang dipertingkatkan. Berhenti dengan docker compose up
. index.js
docker compose down
Walaupun Docker memerlukan persediaan awal, manfaat jangka panjang kod yang boleh dipercayai dan boleh diedarkan adalah signifikan. Tutorial ini merangkumi asas -asas; Terokai sumber selanjutnya untuk kegunaan lanjutan. Imej -imej itu dikekalkan untuk keringkasan.
Atas ialah kandungan terperinci Cara menggunakan node.js dengan docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!