Как развернуть приложение с несколькими портами на Google Application Engine (GCP) - PullRequest
0 голосов
/ 13 июля 2020

Я пытался развернуть приложение с несколькими портами на GCP 。。。 Кто-нибудь может сказать мне, как --?

На самом деле приложение включает только два приложения ... Во-первых, это функция оплаты роутер. Во-вторых, это graphQL, основанный на apollo-server ....

Они отлично работают локально, я называю localhost 4000 для graphQL и 5000 для node.js.

const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const path = require('path');
const graphqlHTTP = require('express-graphql');
const { buildSchema } = require('graphql');
const { gql } = require('apollo-server-express');
const { ApolloServer} = require('apollo-server-express');
const { GraphQLServer } = require('graphql-yoga');
const { prisma } = require('./generated/prisma-client');


const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
const app = express();


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(cors());


//be careful! The token has changed! 
app.post('/payment', (req, res) => {
  const body = {
    source: 'tok_visa',
    amount: req.body.amount,
    currency: 'usd'
  };

  stripe.charges.create(body, (stripeErr, stripeRes) => {
    if (stripeErr) {
        console.log("stripe error");
        console.log(stripeErr);

      res.status(500).send({ error: stripeErr });
    } else {
        console.log(stripeRes);
        res.status(200).send({ success: stripeRes });
    }
  });
});


const typeDefs = gql`
type Collection {
  id: ID!
  title: String! 
  items: [Item!]!
}

type Item {
  id: ID!
  name: String!
  price: Float!
  imageUrl: String!
  collection: Collection
}

type Query {
  collections: [Collection!]!
  collection(id: ID!): Collection
  getCollectionsByTitle(title: String): Collection
}
`;

const resolvers = {
  Query: {
    collections: (root, args, ctx, info) => ctx.prisma.collections({}, info),
    collection: (root, { id }, ctx) => ctx.prisma.collection({ id }),
    getCollectionsByTitle: (root, { title }, ctx) =>
      ctx.prisma.collection({ title })
  },
  Item: {
    collection: ({ id }, args, context) => {
      return context.prisma.item({ id }).collection();
    }
  },
  Collection: {
    items: ({ id }, args, context) => {
      return context.prisma.collection({ id }).items();
    }
  }
};



const server = new GraphQLServer({
  typeDefs,
  resolvers,
  context: {
    prisma
  }
});


server.start(
  {
    port:4000,
    cors: {
      origin: '*'
    }
  },
  () => console.log('GraphQL server is running')
);

// Start the server, refer to google cloud platform documentation
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});
// [END gae_flex_quickstart]

module.exports = app;
...