


Mari kita bincangkan tentang cara untuk menggunakan perkhidmatan nod ke pelbagai persekitaran melalui docker-compose
Bagaimana untuk menggunakan perkhidmatan nod ke pelbagai persekitaran melalui docker-compose? Artikel berikut akan memperkenalkan kepada anda cara menggunakan perkhidmatan Node dalam pelbagai persekitaran dengan Docker-compose. Saya harap ia akan membantu anda!
Secara amnya, selepas projek kami dibangunkan, ia perlu digunakan ke pelbagai persekitaran, seperti ujian, kotak pasir, penyepaduan, dll., jadi cara menggunakan docker-compose kepada Bagaimana pula dengan menggunakan perkhidmatan nod ke pelbagai persekitaran? Artikel berikut menerangkannya secara terperinci Jika ada yang salah, anda dialu-alukan untuk memberi komen.
Teknologi yang digunakan dalam projek dalam artikel ini ialah Gitlab Ansible Docker untuk menggunakan perkhidmatan nod secara automatik (ditulis oleh rangka kerja sarang adalah seperti berikut:
Tulis fail konfigurasi docker-compose, docker-compose.prod.yml
Ubah suai pakej.json
Buat dua direktori pada pelayan jauh, Tarik gudang perkhidmatan nod dan tukar ke cawangan berbeza, masing-masing mewakili ujian dan perkhidmatan nod dalam talian
penyediaan fail.gitlab-ci.yml
Menulis fail ansible.yml
Jalankan arahan berikut dalam direktori perkhidmatan nod pelayan jauh (ujian/dalam talian) Selepas pelaksanaan, semak sama ada bekas bermula seperti biasa
docker ps -a
. Jika sudah naik Status itu tergantung, membuktikan bahawa bekas itu berjaya dimulakan.docker logs -f 容器id
Lihat log kontena
1 2 3 4 5 6 |
|
Langkah khusus
Tulis fail konfigurasi docker-compose, docker-compose.prod.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
Buat pengubahsuaian berikut dalam package.json
1 2 3 4 5 6 7 8 9 10 |
|
Buat dua direktori pada pelayan jauh untuk menyimpan ujian dan perkhidmatan nod dalam talian masing-masing
1 2 3 4 5 |
|
Tulis fail .gitlab-ci.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
Penulisan fail Ansible.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Perkhidmatan nod pelayan jauh ( test/ Jalankan arahan berikut dalam direktori dalam talian)
1 2 3 4 5 |
|
Selepas berjaya memulakan, semak status permulaan kontena melalui docker ps -a
, seperti yang ditunjukkan dalam rajah di bawah:
Arahan:
Persekitaran ujian: Apabila kod cawangan dev tempatan diserahkan atau cawangan lain digabungkan ke dalam dev, ia akan diautomatikkan melalui itlab CI dan Ansible Deploy perkhidmatan nod ke pelayan jauh, tukar cawangan dalam direktori jauh pelayan yang sepadan, tarik kod terkini dan mulakan semula bekas docker ujian yang sepadan
Persekitaran dalam talian: penyerahan kod cawangan induk tempatan atau lain-lain Apabila cawangan digabungkan ke dalam cawangan induk, perkhidmatan nod akan digunakan secara automatik ke pelayan jauh melalui itlab CI dan Ansible, dan cawangan akan ditukar dalam alat kawalan jauh direktori pelayan yang sepadan, kod terkini akan ditarik dan bekas docker dalam talian yang sepadan akan dimulakan semula
Masalah yang dihadapi
Masalah 1 : Tiada direktori node_modules dan direktori dist dalam direktori perkhidmatan nod jauh ujian/dalam talian, iaitu, tiada dua fail seperti yang ditunjukkan di bawah dalam pelayan jauh pada masa yang sama Melihat log kontena docker pada pelayan melaporkan ralat berikut (Ia mengambil masa yang lama untuk menyelesaikan masalah ini sebelum ia diselesaikan)
Menyelesaikan masalah: Didapati bahawa berbanding dengan bekas perkhidmatan nod yang biasa dimulakan, tiada dua direktori ini (dist dan node_modules Periksa sama ada terdapat masalah dengan arahan pelaksanaan arahan dalam docker-compose.yml, iaitu docker). -compose.yml Adakah terdapat masalah dengan yarn && yarn start dalam arahan, jadi saya cuba meletakkan operasi yarn dalam package.json, dan hasilnya baik.
Penyelesaian:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
Nota:
tempat silang env diletakkan Sebelum perintah boleh laku, dalam projek ini, jika ia diletakkan di hadapan, pelayan akan melaporkan silang-env tidak ditemui Jika ia diletakkan pada penghujung, pembolehubah persekitaran tidak akan berkuat kuasa NODE_ENV
yang boleh didapati dalam skrip Perhatikan susunan pelaksanaan semasa melaksanakan arahan, seperti
yarn && yarn build && cross-env NODE_ENV=production node dist/src/main
sebelum
dalam skrip pra
Soalan 2: Nama domain dalam talian hadapan Pemetaan tidak berkuat kuasa Selepas fail konfigurasi nginx memetakan nama domain dalam talian, ia ditemui bahawa apabila mengakses nama domain dalam talian, halaman itu tidak berkuat kuasa
Penyelesaian masalah: Bandingkan fail konfigurasi ujian nginx dengan fail konfigurasi dalam talian Didapati kecuali untuk nama domain dan proksi api, kandungan fail adalah sama Jadi apa sebabnya? Akhirnya, saya mendapati bahawa nama akhiran fail konfigurasi nginx dalam talian adalah salah. Ia ditulis sebagai xxx.confg. fail konfigurasi ialah akhiran yang betul, iaitu akhiran xxx.conf
问题三:Gitlab CI执行异常,具体报错信息大概是报/server目录找不到
排查:在CI里面打印输出CI变量以及拼接出来的目录变量,查看是哪一步有问题,经排查发现都是正常的,唯一不同的一点是CI变量后面设置了环境变量
解决:尝试把环境变量改为All default,结果好了,记住,不要随意配置CI后面的环境变量,如果修改的话,对应的Gitlab里面也是对应需要映射的,环境变量位置如下图所示:
1 2 3 4 5 6 7 8 9 10 11 |
|
本文到这就结束了,后面还会有一篇文件,讲全栈项目从开发到自动化部署整个过程(用到的技术栈是Vue + Nest + Typeorm + Mysql+ Gitlab CI + Ansible + Docker)。
推荐学习:《docker视频教程》、《nodejs 教程》
Atas ialah kandungan terperinci Mari kita bincangkan tentang cara untuk menggunakan perkhidmatan nod ke pelbagai persekitaran melalui docker-compose. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara memadam nod dengan nvm: 1. Muat turun "nvm-setup.zip" dan pasangkannya pada pemacu C 2. Konfigurasikan pembolehubah persekitaran dan semak nombor versi melalui arahan "nvm -v" 3. Gunakan "nvm arahan install" Pasang nod; 4. Padamkan nod yang dipasang melalui arahan "nvm uninstall".

Bagaimana untuk mengendalikan muat naik fail? Artikel berikut akan memperkenalkan kepada anda cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod saya harap ia akan membantu anda!

Artikel ini akan berkongsi dengan anda alat pengurusan proses Node "pm2", dan bercakap tentang mengapa pm2 diperlukan, cara memasang dan menggunakan pm2, saya harap ia akan membantu semua orang!

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Bagaimana untuk membungkus fail boleh laku nodejs dengan pkg? Artikel berikut akan memperkenalkan kepada anda cara menggunakan pkg untuk membungkus projek Node ke dalam fail boleh laku. Saya harap ia akan membantu anda!

npm node gyp gagal kerana versi "node-gyp.js" dan "Node.js" tidak sepadan Penyelesaiannya: 1. Kosongkan cache nod melalui "npm cache clean -f" 2. Melalui "npm install -. g n" Pasang modul n; 3. Pasang versi "nod v12.21.0" melalui arahan "n v12.21.0".

Pengesahan adalah salah satu bahagian terpenting dalam mana-mana aplikasi web. Tutorial ini membincangkan sistem pengesahan berasaskan token dan cara ia berbeza daripada sistem log masuk tradisional. Pada penghujung tutorial ini, anda akan melihat demo berfungsi sepenuhnya yang ditulis dalam Angular dan Node.js. Sistem Pengesahan Tradisional Sebelum beralih kepada sistem pengesahan berasaskan token, mari kita lihat sistem pengesahan tradisional. Pengguna memberikan nama pengguna dan kata laluan mereka dalam borang log masuk dan klik Log Masuk. Selepas membuat permintaan, sahkan pengguna di bahagian belakang dengan menanyakan pangkalan data. Jika permintaan itu sah, sesi dibuat menggunakan maklumat pengguna yang diperoleh daripada pangkalan data dan maklumat sesi dikembalikan dalam pengepala respons supaya ID sesi disimpan dalam penyemak imbas. Menyediakan akses kepada aplikasi tertakluk kepada

Apakah sistem log masuk tunggal? Bagaimana untuk melaksanakannya menggunakan nodejs? Artikel berikut akan memperkenalkan kepada anda cara menggunakan nod untuk melaksanakan sistem log masuk tunggal. Saya harap ia akan membantu anda!
