FROM node:18-alpine WORKDIR /app RUN cat < package.json { "name": "image-border-api-hf", "version": "1.0.0", "description": "API to add white borders to an image.", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "axios": "^1.6.8", "express": "^4.19.2", "sharp": "^0.33.3" } } EOF RUN cat < server.js const express = require('express'); const sharp = require('sharp'); const axios = require('axios'); const app = express(); const PORT = process.env.PORT || 7860; app.get('/add-border', async (req, res) => { const { url } = req.query; if (!url) { return res.status(400).json({ error: 'Параметр "url" обязателен.' }); } const top = parseInt(req.query.top, 10) || 0; const bottom = parseInt(req.query.bottom, 10) || 0; const left = parseInt(req.query.left, 10) || 0; const right = parseInt(req.query.right, 10) || 0; try { const imageResponse = await axios({ url, responseType: 'arraybuffer' }); const imageBuffer = imageResponse.data; const processedImage = await sharp(imageBuffer) .extend({ top: top, bottom: bottom, left: left, right: right, background: { r: 255, g: 255, b: 255, alpha: 1 } }) .png() .toBuffer(); res.set('Content-Type', 'image/png'); res.send(processedImage); } catch (error) { console.error('Ошибка обработки изображения:', error); res.status(500).json({ error: 'Не удалось обработать изображение.' }); } }); app.listen(PORT, () => { console.log(`Сервер запущен на порту ${PORT}`); }); EOF RUN npm install EXPOSE 7860 CMD [ "npm", "start" ]