我确实对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端口并代理我的请求。
我该怎么做?有帮助吗?