Может быть, вы могли бы попробовать это . Просто будьте осторожны, так как этот учебник немного старсреда, использующая настраиваемые среды выполнения в гибкой среде App Engine .
Если вы хотите использовать альтернативную реализациюPython, Java, Node.js, Go, Ruby, PHP, .NET или вы пишете код на любом другом языке, тогда пользовательские среды выполнения для вас. Настраиваемые среды выполнения позволяют вам определять новые среды выполнения, которые могут включать дополнительные компоненты, такие как языковые интерпретаторы или серверы приложений.
Как и для встроенных сред выполнения, вам необходимо добавить app.yaml
файл и дополнительно Dockerfile
в проекте. Я создал пример, используя этот Quickstart и этот GitHub репозиторий .
Вам нужно немного изменить файлы Dockerfile
и index.js
:
Dockerfile
FROM node:alpine
ARG ui5_version="1.69.1"
ARG ui5_filename="openui5-sdk-${ui5_version}.zip"
ARG ui5_url="https://github.com/SAP/openui5/releases/download/${ui5_version}/${ui5_filename}"
WORKDIR /home/node/app
## copy node sources
COPY . .
# install tmp. packages
RUN apk add --no-cache --virtual .sdk wget unzip python make g++
# download sdk
RUN wget ${ui5_url} --no-check-certificate -P /home/node/app
# unzip sdk
RUN unzip -o /home/node/app/${ui5_filename} -d /home/node/app/sdk
# delete sdk.zip
RUN rm /home/node/app/${ui5_filename}
# install node_modules
RUN yarn install --production
# delete tmp. packages
RUN apk del .sdk
# Here's the change for Dockerfile
# App engine expects the application listen on port 8080
# so let's expose that port
EXPOSE 8080
# start server
ENV NODE_ENV=production
CMD [ "yarn", "serve" ]
index.js
const path = require('path');
const fastify = require('fastify')();
const fastifyCors = require('fastify-cors');
const fastifyStatic = require('fastify-static');
// We define port 8080 as GAE expects the app listen on that port.
const port = 8080;
const address = '0.0.0.0';
const root = 'sdk';
(async () => {
try {
// cors
fastify.register(fastifyCors);
// static
fastify.register(fastifyStatic, {
root: path.join(__dirname, root),
dotfiles: 'allow'
});
// listen
await fastify.listen(port, address);
} catch (err) {
process.exit(1)
}
})();
Затем создайте файл app.yaml
:
# We define our runtime as custom so GAE search for
# a Dockerfile.
runtime: custom
env: flex
Наконец, разверните приложение с помощью gcloud app deploy
.
Исходя из этого, вы можете попробовать развернуть свое собственное приложение OPENUI5.