Dalam landskap pembangunan pantas hari ini, kontena telah muncul sebagai pendekatan mengubah permainan untuk pembangun web, menyediakan persekitaran yang konsisten, mudah alih dan mudah diurus. Docker, platform kontena paling popular, membolehkan pembangun mencipta dan mengurus kontena dengan mudah, menjadikan pembangunan dan penggunaan lebih lancar. Menggabungkan Docker dengan rangka kerja Node.js seperti Express.js membawa lebih ketangkasan kepada pembangunan web, membolehkan pembangun mencipta, menguji dan menggunakan aplikasi web dengan mudah.
Dalam artikel ini, kami akan meneroka cara menyediakan dan membangunkan aplikasi Express.js di dalam bekas Docker, memfokuskan pada kelebihan yang dibawanya kepada pembangunan web.
Docker merangkum kebergantungan aplikasi dalam bekas, yang bermaksud:
Untuk pembangunan web menggunakan Express.js, Docker memastikan Node.js dan sebarang kebergantungan lain (seperti pangkalan data atau perpustakaan) dikonfigurasikan dengan betul dalam persekitaran yang berasingan daripada sistem hos.
Mari kita selami langkah yang diperlukan untuk menyediakan dan menjalankan aplikasi Express.js di dalam bekas Docker.
Pertama, buat aplikasi Express.js asas. Jika anda belum memasangnya secara global, anda boleh menjalankan:
npx express-generator myapp cd myapp
Ini mencipta struktur folder asas dan beberapa fail lalai untuk apl Express.js. Seterusnya, pasang sebarang kebergantungan yang diperlukan:
npm install
Fail Docker mentakrifkan persekitaran dan arahan yang diperlukan untuk menyediakan dan menjalankan aplikasi anda. Berikut ialah contoh Dockerfile untuk aplikasi Express.js:
# Use an official Node.js image as the base FROM node:latest AS development # Create and set the working directory inside the container WORKDIR /app # Copy package.json and package-lock.json files to the container COPY package*.json ./ # Install dependencies RUN npm install # Copy the entire application code to the container COPY . . # Expose the port the app runs on EXPOSE 3000 # Run the application CMD ["npm", "start"]
Jika aplikasi anda mempunyai berbilang perkhidmatan (cth., pangkalan data), docker-compose.yml membantu mentakrif dan mengurusnya. Berikut ialah contoh fail docker-compose.yml:
services: app: build: . ports: - "3000:3000" volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development
Untuk mencipta bekas untuk aplikasi anda, buka terminal dalam direktori akar aplikasi (tempat Fail Docker terletak) dan jalankan:
npx express-generator myapp cd myapp
Kemudian, untuk menjalankan bekas, gunakan:
npm install
Aplikasi kini boleh diakses di http://localhost:3000.
Secara lalai, Docker tidak menyokong muat semula secara langsung (di mana perubahan dalam kod ditunjukkan secara automatik). Walau bagaimanapun, anda boleh mencapai ini dengan bantuan nodemon, alat yang memantau perubahan fail dan memulakan semula pelayan secara automatik.
Mula-mula, pasang nodemon sebagai kebergantungan pembangunan:
# Use an official Node.js image as the base FROM node:latest AS development # Create and set the working directory inside the container WORKDIR /app # Copy package.json and package-lock.json files to the container COPY package*.json ./ # Install dependencies RUN npm install # Copy the entire application code to the container COPY . . # Expose the port the app runs on EXPOSE 3000 # Run the application CMD ["npm", "start"]
Kemudian, kemas kini Dockerfile untuk menetapkan NODE_ENV kepada pembangunan dan kemas kini arahan mula:
services: app: build: . ports: - "3000:3000" volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development
Atau jika anda menggunakan docker-compose.yml, anda boleh menentukan arahan terus di dalamnya:
docker build -t express-app .
Persediaan ini membolehkan muat semula secara langsung, yang sangat bermanfaat semasa pembangunan kerana ia menjimatkan masa dan meningkatkan produktiviti.
Untuk mengelakkan isu kebergantungan dibina semula setiap kali, gunakan volum Docker untuk melekapkan kod sumber sistem fail tempatan ke dalam bekas.
Dalam docker-compose.yml:
docker run -p 3000:3000 express-app
Konfigurasi ini menyegerakkan kod anda antara hos dan bekas, tetapi ia tidak mengatasi folder node_modules.
Docker menyediakan pelbagai pilihan untuk nyahpepijat. Anda boleh menambah bendera DEBUG pada aplikasi anda untuk meningkatkan verbositi pengelogan atau menggunakan arahan pengelogan dan pemantauan Docker sendiri:
npm install --save-dev nodemon
Apabila beralih ke pengeluaran, terdapat langkah tambahan untuk pengoptimuman, seperti:
# Install nodemon globally RUN npm install -g nodemon # Run the application using nodemon CMD ["nodemon", "bin/www"]
Kelebihan Membangunkan dengan Express.js dalam Docker
Membangunkan aplikasi Express.js dalam Docker mempunyai kelebihan yang ketara:
Mulakan dengan Docker dan Express.js hari ini untuk melihat cara ia boleh mengubah pengalaman pembangunan anda!
Atas ialah kandungan terperinci Pembangunan Web dalam Bekas Docker Menggunakan Express.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!