Rumah  >  Artikel  >  hujung hadapan web  >  Pembangunan Web dalam Bekas Docker Menggunakan Express.js

Pembangunan Web dalam Bekas Docker Menggunakan Express.js

Patricia Arquette
Patricia Arquetteasal
2024-11-07 15:55:03140semak imbas

Web Development in Docker Containers Using Express.js

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.

Mengapa Menggunakan Docker untuk Pembangunan Web?

Docker merangkum kebergantungan aplikasi dalam bekas, yang bermaksud:

  • Ketekalan merentas persekitaran: Bekas Docker berjalan dengan cara yang sama pada mana-mana sistem yang telah dipasang Docker, menghapuskan isu "ia berfungsi pada mesin saya".
  • Pengasingan: Docker menyediakan persekitaran terpencil untuk aplikasi anda, memastikan ia tidak mengganggu aplikasi lain.
  • Skalabilitas dan Penerapan: Bekas membenarkan penskalaan dan penggunaan yang mudah, menjadikannya mudah untuk mengembangkan aplikasi secara mendatar.

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.

Menyediakan Aplikasi Express.js dalam Docker

Mari kita selami langkah yang diperlukan untuk menyediakan dan menjalankan aplikasi Express.js di dalam bekas Docker.

Langkah 1: Mulakan Aplikasi Express.js

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

Langkah 2: Tulis fail Docker

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"]

Langkah 3: Buat Fail Karang Docker (Pilihan)

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

Langkah 4: Bina dan Jalankan Kontena Docker

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.

Langkah 5: Membangunkan dengan Muat Semula Langsung

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.

Langkah 6: Mengurus Ketergantungan dengan Jilid Docker

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.

Langkah 7: Menyahpepijat Di Dalam Docker

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

Langkah 8: Berlabuh untuk Pengeluaran

Apabila beralih ke pengeluaran, terdapat langkah tambahan untuk pengoptimuman, seperti:

  • Menggunakan binaan berbilang peringkat untuk mengurangkan saiz imej.
  • Menyediakan konfigurasi khusus persekitaran.
  • Menambahkan langkah keselamatan, seperti mengimbas untuk mencari kelemahan. Contoh fail Dockerfile binaan berbilang peringkat:
# 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:

  • Ketekalan Platform: Bekas Docker menyeragamkan persekitaran anda merentas semua peringkat, daripada pembangunan hingga pengeluaran.
  • Ketergantungan Ringkas: Dengan merangkum kebergantungan, anda menghapuskan pemasangan kompleks pada mesin tempatan anda. Penskalaan Pantas: Bekas membenarkan anda menskalakan aplikasi secara mendatar dengan menggunakan contoh tambahan. Kerjasama Tanpa Mudah: Berkongsi Dockerfile atau docker-compose.yml memastikan rakan sepasukan bekerja dalam persekitaran yang tepat. ## Amalan Terbaik
  • Kekalkan Imej Docker Kecil: Gunakan binaan berbilang peringkat untuk meminimumkan saiz imej dan meningkatkan prestasi. Gunakan Pembolehubah Persekitaran untuk Konfigurasi: Elakkan konfigurasi pengekodan keras untuk memastikan persekitaran kontena agnostik.
  • Volume Leverage: Gunakan volum Docker untuk menyimpan data atau kod penyegerakan dalam pembangunan.
  • Automasikan dengan CI/CD: Masukkan Docker ke dalam saluran paip CI/CD untuk penggunaan yang konsisten dan automatik merentas persekitaran. ## Kesimpulan Dockerizing aplikasi Express.js anda menyediakan penyelesaian berskala dan teguh untuk pembangunan web. Dengan menggunakan Docker, anda memperoleh kawalan yang lebih baik ke atas persekitaran, memudahkan pengurusan pergantungan dan meningkatkan kerjasama, yang semuanya penting untuk pembangunan web moden. Sama ada anda sedang mengusahakan aplikasi mudah atau sistem yang kompleks dengan pelbagai perkhidmatan, Docker menyediakan alatan yang boleh menyelaraskan aliran kerja anda dan menyediakan projek anda untuk berjaya dalam pengeluaran.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn