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.

instagram viewer

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 || 5000

app.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.