无法在AWS Elastic beantalk上部署节点映像(NestJS)

时间:2020-06-09 19:23:48

标签: node.js docker nginx amazon-elastic-beanstalk travis-ci

我确实对AWS和Containerization技术也很陌生。我想要实现的是将节点映像部署到AWS。

我正在使用我的main.ts引导程序方法NESTJS

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.setGlobalPrefix('api/v1');
  await app.listen(5000);
  Logger.log(`Server is running on port ${port}`, "Bootstrap");
}
bootstrap();

我还使用Travis CI将容器运送到AWS

我的Docker文件

# Download base image
FROM node:alpine as builder

# Define Base Directory
WORKDIR /usr/app/Api

# Copy and restore packages
COPY ./package*.json ./
RUN npm install

# Copy all other directories
COPY ./ ./

# Setup base command
CMD ["npm", "run", "start"]

MY .travis.yml文件->这是Travis CI的配置

sudo: required
services:
    - docker

branches:
    only: 
        - master

before_install:
    - docker build -t xx/api .

script:
    - docker run xx/api npm run test

deploy:
    provider: elasticbeanstalk
    region: "us-east-2"
    app: "api"
    env: "api-env"
    bucket_name: "name"
    bucket_path: "api"
    on:
        branch: master
    access_key_id: "$AWS_ACCESS_KEY"
    secret_access_key: "$AWS_SECRET_KEY"

每次从Travis CI推送到我的Elastic beantalk的代码开始构建并失败。

因此,我开始谷歌搜索以解决该问题。我能做的是,我需要使用NGINX公开端口。 Expost 80 PORT

FROM Nginx 
EXPOSE 80
COPY --from=builder /app/build /usr/share/nginx/html

我的问题是我应该如何将NGINX合并到我的docker文件中?因为我的应用程序不是static content。如果我将所有构建文物移至/usr/share/nginx/html。由于我不提供静态内容,因此这根本行不通。因此,我需要同时运行服务器到服务器节点应用程序以及运行带有NGINX的另一个容器,该容器将导出80端口并代理我的请求。

我该怎么做?有帮助吗?

My AWS Elastic beanstalk failure image

0 个答案:

没有答案