Amazon web services AWS弹性豆茎与docker应用程序返回502
我用docker创建了一个SPRING-BOOT应用程序,我正在将此映像部署到Elastic beanstalk,一切顺利,通过日志,应用程序启动,但随后访问,我得到了一个503,我尝试了几种方法,有人能给出一个想法吗 我的Dockerrun文件:Amazon web services AWS弹性豆茎与docker应用程序返回502,amazon-web-services,spring-boot,docker,amazon-elastic-beanstalk,Amazon Web Services,Spring Boot,Docker,Amazon Elastic Beanstalk,我用docker创建了一个SPRING-BOOT应用程序,我正在将此映像部署到Elastic beanstalk,一切顺利,通过日志,应用程序启动,但随后访问,我得到了一个503,我尝试了几种方法,有人能给出一个想法吗 我的Dockerrun文件: { "AWSEBDockerrunVersion": "2", "containerDefinitions": [ { "e
{
"AWSEBDockerrunVersion": "2",
"containerDefinitions": [
{
"essential": true,
"image": "187190575110.dkr.ecr.us-east-1.amazonaws.com/kroton-app:${TAG}",
"memory": 512,
"memoryReservation": 256,
"mountPoints": [],
"name": "kroton-app",
"portMappings": [
{
"containerPort": "8080",
"hostPort": "80"
}
]
}
]
}
我的Docker文件:
FROM node:12-alpine
#TEST
# JAVA DEPS
RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
RUN apk --no-cache add maven
# NPM DEPS
RUN mkdir -p /eventos/src/main/resources/node
WORKDIR /eventos
COPY ./src/main/resources/node/package.json src/main/resources/node
RUN cd src/main/resources/node && \
npm install
# NODE APP
COPY ./src/main/resources/node src/main/resources/node
# NODE BUILD
RUN cd src/main/resources/node && \
npm run build:prod
# MAVEN DEPS
COPY ./pom.xml /eventos
RUN mvn dependency:go-offline
# MAVEN BUILD
COPY . /eventos
run mvn clean package -Dspring.profiles.active=prod,storage-s3
RUN mvn install -DskipTests
# CLEANUP
RUN rm -rf src/main/resources/node
EXPOSE 8080
CMD ["java","-jar","-Dspring.profiles.active=prod,storage-s3","/eventos/target/eventos-1.0.0-RELEASE.jar"]
容器上应用程序的我的aws日志(var/log/containers/app.log)
SSH响应:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
60208e7c7429 187190575110.dkr.ecr.us-east-1.amazonaws.com/kroton-app:master "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp ecs-awseb-kroton-prod-ywvf9pvxrr-19-kroton-app-bc9591de9be2fd9f3000
3cee31b0f74d amazon/amazon-ecs-agent:latest "/agent" 6 minutes ago Up 6 minutes (healthy) ecs-agent
$ curl http://localhost:8080
<!doctype html> <html lang="pt"> <head> <title>Eventos Kroton - Home</title> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/> <link rel="stylesheet" href="/css/eventos-977e18c37ae6ce996d5f9871a231481b.css"> </head> <body> <input name="_csrf" value="a03be7d3-b991-4f48-a596-b0c4b6f82dce" id="csrf-token" type="hidden"/> <div> <script src="/js/eventos-82e6dbb5b75296a131489f409be47723.js"></script> </div> <header> <div class="border-bottom"> <div class="mobile-header container my-2 d-md-none"> <span class="mobile-menu-btn fa fa-3x fa-bars"></span> </div> <div class="mini-header container py-2 d-md-block d-none"> <div class="row"> <div class="col"> <a class="text-uppercase" href="https://pgsskroton.com.br/" target="_blank">Portal Strictu Sensu</a> </div> <div class="col text-right"> </div> </div> </div> </div> <div class="main-header container-fluid d-flex py-2 px-xl-5"> <div class="row m-0 w-100"> <div class="search-box form-inline col-4 d-md-flex d-none"> <div class="form-group w-100"> <label class="mr-2" for="search"><span class="fa fa-2x fa-search"></span></label> <select class="flex-grow-1 form-control form-control-sm border-0" id="search" placeholder="Pesquisar" type="text"> </select> </div> </div> <div class="logo-container align-self-center col-12 col-md-4"> <a class="text-decoration-none" href="/" title="Eventos Kroton"> <img alt="Eventos Kroton" class="mx-auto d-block" src="/img/logo.svg"> </a> </div> <ul class="header-menu list-inline text-right align-self-center col-4 d-md-block d-none m-0" id="desktop-menu"> <li class="list-inline-item"><a href="/login">Login</a></li> <li class="list-inline-item"><a href="/registrar">Criar Nova Conta</a></li> </ul> </div> </div> </header> <div> <section id="events-banner" class="py-5"> <div class="events-featured container"> <div id="events-carousel" class="carousel slide carousel-fade" data-ride="carousel"> <ol class="carousel-indicators"> </ol> <div class="carousel-inner"> </div> </div> </div> </section> </div> <div> <div class="footer navbar-fixed-bottom text-center" style="background-color: #046eb1; color: white;padding : 5px; margin: 5px;"> <address> Kroton Educacional 2020. Todos os Direitos Reservados - Sistema de Eventos<br> Contato: <a style="color: white;hover: red;" href="mailto:editora@kroton.com.br">editora@kroton.com.br</a> </address> </div> </div> <script>EventosJs.init();function searchSelectize(a){a("#search").selectize({valueField:"id",labelField:"titulo",searchField:"titulo",preload:true,options:[],create:false,render:{option:function(c,b){return'<div><div class="row px-1 mb-2 cursor-pointer"><div class="col-4"><img class="img-fluid" src="/img/eventos/'+c.id+"/thumb/"+c.imgMiniaturaName+'.jpg" ></div><div class="col-8">'+b(c.titulo)+"</div></div></div>"}},load:function(b,c){a.ajax({url:"/api/evento/find",type:"GET",dataType:"json",data:{titulo:b},error:function(){c()},success:function(d){c(d.content)}})},onChange:function(b){this.clearOptions();window.location="/eventos/"+b}})}EventosJs.addEvent(searchSelectize);</script> </body> </html>
$sudo docker ps
容器ID映像命令已创建状态端口名称
60208e7c7429 187190575110.dkr.ecr.us-east-1.amazonaws.com/kroton app:master“docker entrypoint.s…”5分钟前上升5分钟0.0.0.0.0:8080->8080/tcp ecs-awseb-kroton-prod-ywvf9pvxr-19-kroton-app-bc9591de9be2fd9f3000
3cee31b0f74d亚马逊/亚马逊ecs代理:最新“/agent”6分钟前启动6分钟(正常)ecs代理
$curlhttp://localhost:8080
Eventos Kroton-HomeEventosJs.init();函数searchSelectize(a){a(“#search”).selectize({valueField:“id”,labelField:“titulo”,searchField:“titulo”,preload:true,options:[],create:false,render:{option:function(c,b){return b(c.titulo)+},load:function(b,c){a.ajax({url:/api/evento/find),type:“GET”,dataType:“json”,data:{titulo:b},error:function(){c(),success:function(d){c.ajax)})},onChange:function(b){this.clearpoptions();window.location=“/eventos/”+b}}}EventosJs.addEvent(searchSelectize);
您的新输出显示您正在使用端口8080:
0.0.0.0:8080->8080/tcp
您的dockrun
与以下端口不匹配:
"portMappings": [
{
"containerPort": "8000",
"hostPort": "80"
}
因此,在运行时,您在dockrun
和实际的docker中使用了不同的端口
可能不需要在
Dokerfile
中使用EXPOSE 8080
在Dockerfile
上公开端口8080,在dockrun.aws.json
上公开映射8000。我相信这才是真正的问题。对于解决方案,您可以在映像上公开端口8000,并在部署后尝试访问
您能否尝试使用此Dockerfile
构建映像
FROM node:12-alpine
#TEST
# JAVA DEPS
RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
RUN apk --no-cache add maven
# NPM DEPS
RUN mkdir -p /eventos/src/main/resources/node
WORKDIR /eventos
COPY ./src/main/resources/node/package.json src/main/resources/node
RUN cd src/main/resources/node && \
npm install
# NODE APP
COPY ./src/main/resources/node src/main/resources/node
# NODE BUILD
RUN cd src/main/resources/node && \
npm run build:prod
# MAVEN DEPS
COPY ./pom.xml /eventos
RUN mvn dependency:go-offline
# MAVEN BUILD
COPY . /eventos
run mvn clean package -Dspring.profiles.active=prod,storage-s3
RUN mvn install -DskipTests
# CLEANUP
RUN rm -rf src/main/resources/node
EXPOSE 8000
CMD ["java","-jar","-Dspring.profiles.active=prod,storage-s3","/eventos/target/eventos-1.0.0-RELEASE.jar"]
如果使用ssh连接到实例中,container是否运行?您可以运行
sudo docker ps
。检查暴露的端口,并直接卷曲容器以查看应用程序是否在本地主机上工作。好的,我将其插入实例并在端口上运行docker ps和卷曲,将上面的结果添加为SSH响应rry,我在Dockerrun.aws.json中编辑了此端口,但不工作。抱歉,我在Dockerrun.aws.json中编辑了此端口,你没有公开负载均衡器上关联的安全组上的端口吗?我没有做任何关于负载均衡器的事情,你有一个我可以验证这一点的例子吗?有什么想法@CauêAlves Braz
FROM node:12-alpine
#TEST
# JAVA DEPS
RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
RUN apk --no-cache add maven
# NPM DEPS
RUN mkdir -p /eventos/src/main/resources/node
WORKDIR /eventos
COPY ./src/main/resources/node/package.json src/main/resources/node
RUN cd src/main/resources/node && \
npm install
# NODE APP
COPY ./src/main/resources/node src/main/resources/node
# NODE BUILD
RUN cd src/main/resources/node && \
npm run build:prod
# MAVEN DEPS
COPY ./pom.xml /eventos
RUN mvn dependency:go-offline
# MAVEN BUILD
COPY . /eventos
run mvn clean package -Dspring.profiles.active=prod,storage-s3
RUN mvn install -DskipTests
# CLEANUP
RUN rm -rf src/main/resources/node
EXPOSE 8000
CMD ["java","-jar","-Dspring.profiles.active=prod,storage-s3","/eventos/target/eventos-1.0.0-RELEASE.jar"]