【发布时间】:2018-06-10 23:55:41
【问题描述】:
我有两个微服务映像,一个 Go Rest API 和一个 React 前端,它们都在我的 AWS ECR 中。我将使用 Elastic Beanstalk。现在,因为我相信它们在同一台机器上,所以我将 React 应用程序配置为从 localhost:8080 上的 API 获取数据。以下是两者的 Dockerfile。它们在我的开发环境中工作,所以我将它们推送到我的 ECR。
Golang Rest API 的 Dockerfile
FROM golang
ADD . /go/src/vsts/project/gorestapi
WORKDIR /go/src/vsts/project/gorestapi
RUN go get github.com/golang/dep/cmd/dep
RUN dep ensure
RUN go install .
ENTRYPOINT /go/bin/gorestapi
EXPOSE 8080
用于 React 前端应用程序的 Dockerfile
FROM node:8.4.0-alpine
WORKDIR /usr/src/app
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm i -g serve
CMD serve -s build/app -p 3000
EXPOSE 3000
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build
我不知道是否还需要声明卷或挂载点,我只知道我需要将 dockerrun json 的版本以及容器定义中的名称、图像和端口映射放在那里。大多数示例都令人困惑,因为它们都没有显示来自私人仓库的应用程序,并且它们具有那些我不太了解如何使用的卷、挂载点、链接。我尝试了下面的一个,但它不起作用
编辑:(我更改了 Dockerrun.aws.json 期望 Volume Host SourcePath 成为我机器中的路径。如果我错了,请更正)
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "webapp",
"host": {
"sourcePath": "/webapp"
}
},
{
"name": "gorestapi",
"host": {
"sourcePath": "/gorestapi"
}
}
],
"containerDefinitions": [
{
"name": "gorestapi",
"image": "<acctId>.dkr.ecr.us-east-1.amazonaws.com/dev/gorestapi:latest",
"essential": true,
"memory": 512,
"portMappings": [
{
"hostPort": 8080,
"containerPort": 8080
}
],
"links": [
"webapp"
],
"mountPoints": [
{
"sourceVolume": "gorestapi",
"containerPath": "/go/src/vsts/project/gorestapi"
}
]
},
{
"name": "webapp",
"image": "<acctId>.dkr.ecr.us-east-1.amazonaws.com/dev/webapp:latest",
"essential": true,
"memory": 256,
"portMappings": [
{
"hostPort": 3000,
"containerPort": 3000
}
],
"mountPoints": [
{
"sourceVolume": "webapp",
"containerPath": "/usr/src/app"
}
]
}
]
}
我是否为路径指定了正确的值?
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk