【发布时间】:2021-02-08 14:39:17
【问题描述】:
我已经在 GitHub 中提出了这个问题,请参阅 https://github.com/quarkusio/todo-demo-app/issues/16# 但在此处被指出。
我使用这个 Dockerfile 创建了一个 Docker 镜像,用于在 DEV 模式下运行 quarkus 待办事项列表应用程序(即使用 H2 数据存储):
FROM openjdk:8-jdk-alpine
LABEL xxx xxx xx@xx
USER root
RUN wget https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz -P /tmp
RUN tar xf /tmp/apache-maven-3.6.3-bin.tar.gz -C /opt
RUN ln -s /opt/apache-maven-3.6.3/bin/mvn /usr/bin/mvn
RUN mkdir -p /usr/share/quarkus
COPY quarkus.tar.gz /usr/share/quarkus
RUN tar -xzf /usr/share/quarkus/quarkus.tar.gz -C /usr/share/quarkus
RUN rm -f /usr/share/quarkus/quarkus.tar.gz
EXPOSE 8080
CMD ["sh", "-c", "cd /usr/share/quarkus; mvn compile quarkus:dev"]
在我的 Windows docker 桌面上本地运行此映像时,应用程序运行良好。启动后控制台输出的最后几行如预期:
Hibernate: INSERT INTO todo(id, title, completed, ordering, url) VALUES (nextval('hibernate_sequence'), 'Visit Quarkus web site', false, 2, 'https://quarkus.io') Hibernate: INSERT INTO todo(id, title, completed, ordering, url) VALUES (nextval('hibernate_sequence'), 'Star Quarkus project', false, 3, 'https://github.com/quarkusio/quarkus/') 2020-10-24 11:58:57,417 INFO [io.quarkus] (main) Quarkus 0.15.0 started in 3.878s. Listening on: http://[::]:8080 2020-10-24 11:58:57,422 INFO [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, hibernate-validator, jdbc-h2, narayana-jta, resteasy, resteasy-jsonb]
但是,此映像在传输到 Amazon AWS ECR 并使用 ECS Fargate 集群部署时无法正常启动。当通过分配的公共 IP (http://54.86.53.85:8080/todo.html) 打开应用程序 URL 时,浏览器只显示一个没有内容的空白页面。尽管如此,应用程序的浏览器选项卡标题仍能正确显示。本例中启动后控制台输出的最后几行是:
INSERT INTO todo(id, title, completed, ordering, url) VALUES (nextval('hibernate_sequence'), 'Introduction to Quarkus', true, 0, null) 2020-10-24 12:11:03 Hibernate: Hibernate: 2020-10-24 12:11:03 2020-10-24 12:11:03 alter table Todo alter table Todo 2020-10-24 12:11:03 add constraint UK_oxfuur9jdyqshux5rm7g7ga6c unique (title) add constraint UK_oxfuur9jdyqshux5rm7g7ga6c unique (title) 2020-10-24 12:11:03 id bigint not null, id bigint not null, 2020-10-24 12:11:03 completed boolean not null, completed boolean not null, 2020-10-24 12:11:03 ordering integer, ordering integer, 2020-10-24 12:11:03 title varchar(255), title varchar(255), 2020-10-24 12:11:03 url varchar(255), url varchar(255), 2020-10-24 12:11:03 primary key (id) primary key (id) 2020-10-24 12:11:03 ) )
可以看出,本地运行映像的控制台输出末尾显示的消息Listening on: http://[::]:8080 在这里丢失了。
有人知道 AWS 案例中出了什么问题吗?
在 ECS Fargate 集群内创建的用于运行容器的 ECR 任务中,我显式启用了通过端口 8080 进行通信。是否必须对 quarkus 待办事项日志消息 Established TCP socket on 64572 和/或Listening for transport dt_socket at address: 5005?
我知道本机编译模式在这里可能更有意义;但我仍然是整个领域的新手,并将保留此作为未来的选择。
【问题讨论】:
标签: quarkus