Dockerizálja a Node.js REST API-t a Docker konténerezési technológiájával, amely leegyszerűsíti a telepítési és kezelési folyamatot.
Az alkalmazások különböző környezetekben történő telepítése és futtatása nehézkes lehet, mivel számos tényezőt kell figyelembe venni például a környezeti változók beállítása a szükséges függőségek és a különböző szoftvercsomagok konkrét verzióinak konfigurálásához.
A Docker konténerezési technológiájának használatával azonban minimális erőfeszítéssel telepíthet alkalmazásokat különböző környezetekben a docker lemezkép összes szükséges függőségével. Ez azt jelenti, hogy nem kell aggódnia semmilyen konfiguráció elvégzése miatt. Ez megkönnyíti az alkalmazások telepítését és futtatását különböző környezetekben.
Mi az a Docker?
Dokkmunkás egy fejlesztői platform, amely eszközöket és környezetet biztosít az alkalmazások hordozható lemezképként történő csomagolásához, amelyek önálló végrehajtható komponensként futtathatók konténerekben.
Ezek a tárolók alkotják az alkalmazás kódját és a szükséges függőségeket, hogy az alkalmazás különböző futási környezetekben problémamentesen tudjon sikeresen futni.
Mielőtt elkezdené, telepítse a Dockert a helyi számítógépére. Tekintse meg a platform-specifikus előfeltételeket és a telepítési utasításokat a hivatalos dokumentációból.
Hozzon létre egy Node.js REST API-t
A kezdéshez hozzon létre egy Node.js webszervert.
Az alkalmazás kódja megtalálható benne GitHub adattár.
Ezután telepítse a projekthez szükséges csomagokat.
npm install morgan pg knex
A old csomag a PostgreSQL adatbázissal való kapcsolat létrehozására szolgál. knexmásrészt egy egyszerű API-t biztosít a PostgreSQL-lel való interakcióhoz – SQL-lekérdezések írásához fogja használni.
Végül használni fogod morgan, egy köztes szoftver, amely naplózza a HTTP-kéréseket és -válaszokat a konzolon a Docker-tárolóban futó alkalmazás hibakereséséhez és figyeléséhez.
Végül nyissa meg a index.js fájlt, és add hozzá a kódot alatta egyszerű REST API-t valósít meg három útvonallal.
const expressz = igényelnek("Expressz")
const morgan = igényelnek("morgan")
const app = express()
const db = igényelnek('./db')
const PORT = process.env. PORT || 5000app.use (morgan('dev'))
app.use (express.json())
app.use (express.urlencoded({ kiterjedt: igaz }))app.get('/', (req, res) => res.send('Helló Világ!' ))
app.get('/felhasználók', async (req, res) => {
const felhasználók = várja db.select().from("felhasználók")
res.json (felhasználók)
})app.post('/felhasználók', async (req, res) => {
const felhasználó = várja db("felhasználók").insert({ név: req.body.name }).returning('*')
res.json (felhasználó)
})
app.listen (PORT, () => konzol.log(`Szerver a PORT-nál:${PORT}`))
Állítsa be az adatbázis-kapcsolatot
A REST API kölcsönhatásba lép a Docker PostgreSQL-példányával, azonban először konfigurálnia kell az adatbázis-kapcsolatot az alkalmazásban. A projektmappa gyökérkönyvtárában hozzon létre a db.js fájlt, és adja hozzá az alábbi kódot.
const knex = igényelnek('knex')
modult.exports = knex({
ügyfél: 'postgres',
kapcsolat: {
házigazda: 'db',
felhasználó: "testUser",
Jelszó: "mypassword123",
adatbázis: "testUser",
},
})
Állítsa be a migrate.js és seed.js fájlokat
Ez a két fájl lehetővé teszi egy tábla létrehozását az adatbázisban és az API-n keresztül tesztadatokkal való feltöltését. Hozzon létre egy új mappát, forgatókönyvek, a projekt gyökérkönyvtárába, és adjon hozzá két fájlt: migrate.js és seed.js.
Ban,-ben migrate.js fájlt, add hozzá az alábbi kódot:
const db = igényelnek("../db");
(async () => {
próbáld ki {
várja db.schema.dropTableIfExists("felhasználók")
várja db.schema.withSchema('nyilvános').táblázat létrehozása("felhasználók", (tábla) => {
table.increments()
table.string('név')
})
konzol.log('Felhasználói táblázat létrehozva!')
process.exit(0)
} fogás (hiba) {
konzol.log (hiba)
process.exit(1)
}
})()
Ez a kód létrehozza a felhasználókat táblázat egy automatikusan növekvő azonosító oszloppal és a név oszlopban az adatbázisban.
Következő, a seed.js fájlt, add hozzá az alábbi kódot:
const db = igényelnek("../db");
(async () => {
próbáld ki {
várja db("felhasználók").insert({ név: "Teszt felhasználó1" })
várja db("felhasználók").insert({ név: "Teszt felhasználó2" })
konzol.log('Felhasználók hozzáadva!')
process.exit(0)
} fogás (hiba) {
konzol.log (hiba)
process.exit(1)
}
})()
Ez a kód egy aszinkron függvényt valósít meg, amely két felhasználót szúr be a PostgreSQL adatbázisba.
Végül add hozzá ezeket a parancsokat a sajátodhoz package.json fájlt.
"szkriptek": {
"Rajt": "csomópont index.js",
"vándorol": "node scripts/migrate.js",
"mag": "node scripts/seed.js"
},
Mivel nincs beállítva kliense, az API teszteléséhez a két fájlt szkriptként kell futtatnia a npm futás parancs.
Dockerfile beállítása
A Dockerfile meghatározza a Docker-motor által a Docker-lemezkép létrehozásához szükséges utasításokat. A projekt gyökérkönyvtárában hozzon létre egy új fájlt, és nevezze el, Dockerfile. Ezután adja hozzá a következő utasításokat a Docker-lemezkép létrehozásához a Node.js alkalmazáshoz.
TÓL TŐL csomópont:16.3.0-alpesi3.13
WORKDIR /app
MÁSOLAT csomag*.json ./
FUSS npm telepítés
MÁSOLAT. .
KIFEJEZNI8000
CMD [ "csomópont", "index.js" ]
Bontsuk szét:
- TÓL TŐL - Ez az utasítás beállítja az alkalmazás alapképet, amely a Node.js Alpine lemezkép, a Node.js lemezkép könnyű változata, amely a Docker beállításjegyzékében található.
- WORKDIR - készletek /app könyvtárat munkakönyvtárként.
- MÁSOLAT csomag*.json./ - utasítja a Dockert, hogy másolja át az összes fájlnév formátumot az aktuális könyvtárból a /app mappát.
- FUSS - végrehajtja és felépíti a képet.
- MÁSOLAT.. - átmásolja a forrásfájlokat a /app mappát.
- KIFEJEZNI - ez arra utasítja a Dockert, hogy tegye ki a tárolóban lévő portot a külső környezetnek, ebben az esetben a gazdagépnek.
- CMD - megadja a végrehajtandó parancsot, amikor a Docker-tároló létrejön a képből.
Hozd létre a Docker Compose fájlt
Ahhoz, hogy a Node.js alkalmazás együttműködjön a Docker PostgreSQL-példányával, a két alkalmazásnak Docker-tárolókban kell futnia ugyanabban a hálózati környezetben.
Emiatt meg kell határoznia és fel kell építenie az alkalmazás képét és a PostgreSQL-példányt is Docker Compose - egy eszköz, amely lehetővé teszi több Docker-tároló létrehozását és kezelését.
Egyszerűen fogalmazva, a Docker Compose használatával egyetlen egységként definiálhatja az alkalmazást alkotó szolgáltatásokat, ebben az esetben a Node.js REST API-t és a PostgreSQL adatbázist.
Hozzon létre egy új fájlt, docker-compose.yml, a gyökérkönyvtárba, és adja hozzá az alábbi kódot:
változat:'3.9'
szolgáltatások:
szerver:
épít:.
portok:
-'5000:5000'
attól függ:
-db
db:
kép:'postgres'
portok:
-'4321:5432'
környezet:
POSTGRES_PASSWORD:"mypassword123"
POSTGRES_USER:"testUser"
kötetek:
-data:/var/lib/postgresql/data
kötetek:
adat:
Ez a kód két Docker-tárolót hoz létre és futtat. Az első konténer, szerver, a Docker Compose a Dockerfile-t használja a tároló képének létrehozásához.
Azt is meghatározza, hogy a kiszolgálókonténer függ a db tartály. Vagyis a szerver után kell elindítani a tartályt db konténer, hogy csatlakozzon hozzá.
A második tároló egy PostgreSQL adatbázis-tároló. Ehhez a tárolóhoz nem kell Docker-fájlt megadnia, mivel az a Docker képfájl-nyilvántartásában lévő PostgreSQL-lemezképből jön létre.
Építsd meg a Docker képeket
Használja a Docker Compose parancsot a képek összeállításához és a két tároló elindításához.
docker-compose up -d
A folyamat sikeres befejezése után hasonló választ kell látnia.
Tesztelje a REST API-t
Futtassa az alábbi parancsot a Docker-tárolóban futó REST API teszteléséhez. Létre kell hoznia egy táblát a PostgreSQL adatbázisban.
docker exec docker_node-server-1 npm run migrate
Hasonló választ kell látnod.
A Docker-képek megosztása
Az utolsó lépés a Node.js-alkalmazás Docker-lemezképének a Docker Hubra való átküldése. Ez hasonló ahhoz, mintha a projektjeit a GitHubba helyezné.
- Irány oda Docker Hub és regisztráljon egy fiókot, és jelentkezzen be a felhasználói irányítópultra.
- Ezután kattintson a gombra Hozzon létre egy adattárat. Adja meg a tárhely nevét, és állítsa be a láthatóságát bármelyikre Nyilvános vagy Magán majd kattintson Teremt.
- Az alkalmazás Docker-képének Docker Hub-ra küldéséhez először be kell jelentkeznie fiókjába a terminálon keresztül, majd meg kell adnia felhasználónevét és jelszavát.
docker bejelentkezés
- Ezután frissítse a Docker-kép nevét, hogy az megfeleljen a következő formátumnak:
/ . A módosítás végrehajtásához futtassa az alábbi parancsot:
dokkoló címke /
- Végül nyomja meg a Docker-képet.
dokkoló tolja /< repo neve>
Docker használata a fejlesztésben
Ez az útmutató csak a Docker által kínált lehetőségek töredékét érintette. Mostantól azonban a Docker konténerezési technológiáját használhatja bármilyen alkalmazás és annak minden függőségének csomagolására képek, amelyek különböző fejlesztésekben, valamint olyan éles környezetekben, mint a felhő, anélkül telepíthetők csuklás.