Dockerize вашия Node.js REST API с помощта на технологията за контейнеризация на Docker, която опростява процеса на внедряване и управление.
Процесът на внедряване и стартиране на приложения в различни среди може да бъде караница, тъй като има редица фактори, които трябва да се вземат предвид като настройка на променливите на средата за конфигуриране на необходимите зависимости и конкретни версии на различни софтуерни пакети.
Въпреки това, като използвате технологията за контейнеризация на Docker, можете да разположите приложения в различни среди с минимални усилия с всички необходими зависимости в изображението на докер. Което означава, че не е нужно да се притеснявате да правите каквато и да е конфигурация. Това прави процеса на внедряване и стартиране на приложения в различни среди лесен.
Какво е Docker?
Докер е платформа за разработка, която предоставя инструментите и средата за пакетиране на приложения като преносими изображения, които могат да се изпълняват като самостоятелни изпълними компоненти в контейнери.
Тези контейнери представляват кода на приложението и необходимите зависимости, за да може приложението да работи успешно в различни среди за изпълнение без никакви проблеми.
Преди да започнете, инсталирайте Docker на вашата локална машина. Проверете специфичните за платформата предпоставки и инструкции за инсталиране от официалната документация.
Създайте Node.js REST API
За да започнете, създайте уеб сървър Node.js.
Можете да намерите кода на това приложение в него GitHub хранилище.
След това инсталирайте необходимите пакети за този проект.
npm инсталирайте morgan pg knex
The стр пакетът се използва за установяване на връзка с база данни на PostgreSQL. knex, от друга страна, предоставя прост API за взаимодействие с PostgreSQL — ще го използвате за писане на SQL заявки.
Накрая ще използвате Морган, междинен софтуер, който регистрира HTTP заявки и отговори на конзолата, за отстраняване на грешки и наблюдение на вашето приложение, работещо в Docker контейнер.
Накрая отворете index.js файл и добавете кода под него имплементира прост REST API с три маршрута.
конст експрес = изискват("експресен")
конст морган = изискват("морган")
конст приложение = експрес()
конст db = изискват('./db')
конст PORT = process.env. ПРИСТАНИЩЕ || 5000app.use (morgan("dev"))
app.use (express.json())
app.use (express.urlencoded({ удължен: вярно }))app.get('/', (req, res) => res.send('Здравей свят!' ))
app.get('/потребители', асинхронен (req, res) => {
конст потребители = изчакайте db.select().from("потребители")
res.json (потребители)
})app.post('/потребители', асинхронен (req, res) => {
конст потребител = изчакайте db("потребители").вмъкнете ({ име: req.body.name }).returning('*')
res.json (потребител)
})
app.listen (ПОРТ, () => конзола.log(`Сървър на PORT:${ПОРТ}`))
Конфигурирайте връзката към базата данни
REST API ще взаимодейства с екземпляра на PostgreSQL на Docker, но първо трябва да конфигурирате връзката към базата данни във вашето приложение. В главната директория на папката на вашия проект създайте a db.js файл и добавете кода по-долу.
конст knex = изискват("кнекс")
модул.exports = knex({
клиент: "postgres",
Връзка: {
домакин: 'db',
потребител: „testUser“,
парола: "моята парола123",
база данни: „testUser“,
},
})
Настройте файловете migrate.js и seed.js
Тези два файла ще направят възможно създаването на таблица в базата данни и попълването й с тестови данни чрез API. Създайте нова папка, скриптове, в основната директория на вашия проект и добавете два файла: migrate.js и seed.js.
В migrate.js файл, добавете кода по-долу:
конст db = изискват('../db');
(асинхронен () => {
опитвам {
изчакайте db.schema.dropTableIfExists("потребители")
изчакайте db.schema.withSchema("публичен").createTable("потребители", (таблица) => {
table.increments()
table.string(име)
})
конзола.log('Създадена потребителска таблица!')
process.exit(0)
} улов (грешка) {
конзола.log (грешка)
process.exit(1)
}
})()
Този код ще създаде a потребители таблица с автоматично увеличаваща се id колона и a име колона в базата данни.
На следващо място, в seed.js файл, добавете кода по-долу:
конст db = изискват('../db');
(асинхронен () => {
опитвам {
изчакайте db("потребители").вмъкнете ({ име: „Тест потребител1“ })
изчакайте db("потребители").вмъкнете ({ име: „Тест потребител 2“ })
конзола.log(„Добавени фиктивни потребители!“)
process.exit(0)
} улов (грешка) {
конзола.log (грешка)
process.exit(1)
}
})()
Този код имплементира асинхронна функция, която ще вмъкне двама потребители в базата данни на PostgreSQL.
Накрая добавете тези команди към вашите package.json файл.
"скриптове": {
"старт": "node index.js",
"мигрирам": "скриптове на възел/migrate.js",
"семена": "скриптове на възел/seed.js"
},
Тъй като нямате конфигуриран клиент, за да тествате API, ще трябва да стартирате двата файла като скриптове заедно с npm изпълнение команда.
Настройте Docker файл
Dockerfile дефинира инструкциите, изисквани от Docker двигателя за изграждане на Docker изображение. В главната директория на вашия проект създайте нов файл и го наименувайте, Докер файл. След това добавете следните инструкции, за да създадете Docker изображение за приложението Node.js.
ОТ възел:16.3.0-алпийски3.13
WORKDIR /app
КОПИЕ пакет*.json ./
БЯГАЙТЕ npm инсталирайте
КОПИЕ. .
ИЗЛОЖИ8000
CMD [ "възел", "index.js" ]
Нека го разбием:
- ОТ - Тази инструкция задава базовото изображение за приложението, което е изображението Node.js Alpine, олекотена версия на изображението Node.js, което може да се намери в регистъра на Docker.
- WORKDIR - комплекти /app директория като работна директория.
- КОПИЕ пакет*.json./ - инструктира Docker да копира всички файлове с този формат на файловото име от текущата директория в /app папка.
- БЯГАЙТЕ - изпълнява и изгражда образа.
- КОПИЕ.. - копира изходните файлове в /app папка.
- ИЗЛОЖИ - това инструктира Docker да изложи порт в контейнера на външната среда, в този случай, хост машината.
- CMD - указва командата, която да бъде изпълнена, когато Docker контейнерът е създаден от изображението.
Създайте файла за композиране на Docker
За да може приложението Node.js да взаимодейства с екземпляра на PostgreSQL на Docker, двете приложения трябва да работят в контейнери на Docker в една и съща мрежова среда.
Поради тази причина трябва да дефинирате и изградите както изображението на приложението, така и екземпляра на PostgreSQL, като използвате Docker Compose — инструмент, който ви позволява да създавате и управлявате множество Docker контейнери.
Казано по-просто, като използвате Docker Compose, можете да дефинирате услугите, които съставят вашето приложение като единична единица, в този случай Node.js REST API и PostgreSQL базата данни.
Създайте нов файл, docker-compose.yml, в основната директория и добавете кода по-долу:
версия:'3.9'
услуги:
сървър:
изграждане:.
портове:
-'5000:5000'
зависи от:
-db
db:
изображение:"postgres"
портове:
-'4321:5432'
заобикаляща среда:
POSTGRES_PASSWORD:"моята парола123"
POSTGRES_USER:„testUser“
томове:
-данни:/var/lib/postgresql/data
томове:
данни:
Този код ще създаде и стартира два Docker контейнера. Първият контейнер, сървър, Docker Compose използва Dockerfile за изграждане на изображението за този контейнер.
Той също така уточнява, че сървърният контейнер зависи от db контейнер. Което означава, че сървър контейнерът трябва да бъде стартиран след db контейнер за свързване с него.
Вторият контейнер е контейнер на база данни на PostgreSQL. Не е необходимо да указвате Dockerfile за този контейнер, тъй като той ще бъде създаден от изображението на PostgreSQL в регистъра на изображенията на Docker.
Създайте изображенията на Docker
Използвайте командата Docker Compose, за да създадете изображенията и да стартирате двата контейнера.
докер-съставяне -d
Трябва да видите подобен отговор, след като процесът приключи успешно.
Тествайте REST API
Изпълнете командата по-долу, за да тествате REST API, работещ в контейнера на Docker. Трябва да създаде таблица в базата данни на PostgreSQL.
docker exec docker_node-server-1 npm изпълнение мигриране
Трябва да видите подобен отговор.
Споделяне на Docker изображения
Последната стъпка е да изпратите Docker изображението за вашето Node.js приложение в Docker Hub. Това е подобно на прехвърлянето на вашите проекти към GitHub.
- Насочете се към Docker Hub и се регистрирайте за акаунт и влезте в потребителското табло.
- След това щракнете върху Създаване на хранилище. Въведете името на вашето хранилище и задайте неговата видимост на едно от двете Обществен или Частно и след това щракнете Създавайте.
- За да изпратите Docker образа на вашето приложение към Docker Hub, първо трябва да влезете в акаунта си през терминала и след това да предоставите вашето потребителско име и парола.
влизане в докер
- След това актуализирайте името на вашето Docker изображение, за да съответства на този формат:
/ . Изпълнете командата по-долу, за да направите тази промяна:
докер етикет /
- Накрая натиснете вашето Docker изображение.
докер натискане /< име на репо>
Използване на Docker в разработката
Това ръководство засяга само малка част от потенциала, който Docker може да предложи. Сега обаче можете да използвате технологията за контейнеризация на Docker, за да пакетирате всяко приложение и всичките му зависимости като изображения, които могат да бъдат разгърнати в различни среди за разработка, както и производствени среди като облак без никакви хълцане.