我对docker文件有以下要求...
const matcher = (attr) => attr.nodeName.startsWith('evt:');
const directive = (source, target, attr) => {
const eventName = attr.nodeName.slice(4);
const callbackName = attr.nodeValue;
target.addEventListener(eventName, source[callbackName].bind(source));
};
Slim.customDirective(matcher, directive);
// usage: <li evt:ontransitionend="myFunction"></li>
然后配置弹簧...
FROM openjdk:11-jdk-slim
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Dexternal.config.active='false'","-jar","/app.jar"]
一切似乎都可以开始文件,我明白了
docker {
springBootApplication {
baseImage = 'openjdk:11-jdk-slim'
ports = [9090, 8080]
tag = 'app:0.2'
}
}
我知道...
Started Application in 8.743 seconds (JVM running for 9.153)
但是,当我运行f46b4cbfa799 646eced45077 "java -jar /app/simp…" 15 minutes ago Up 15 minutes 8080/tcp, 9090/tcp mystifying_kirch
并在docker inspect <imageId> | grep "IPAddress"
这样的浏览器中输入该地址时,出现超时错误。我知道我可以在运行时使用端口映射,但是有没有一种方法可以映射到我的本地主机呢?
我也尝试过...
http://<IP>:8080
所以它不是浏览器。
也试图像这样映射它...
0.0.0.0:8080-> 8080 / tcp,9090 / tcp
但是localhost:8080(或IP地址)发送一个空响应“未发送任何数据。”
答案 0 :(得分:1)
在对Web服务(此处为Java Spring Boot应用程序)进行泊坞服务时,通常会发生的问题是不应使用localhost
地址并将其替换为0.0.0.0
。
有关更多详细信息,请参见此SO answer,它很好地解释了在Docker上下文中代表localhost
的含义。
对于0.0.0.0
地址,此special IP在这里仅表示“任何IPv4地址”。
最后,正如OP在评论中确认的那样,对于Spring Boot,只需在server.address
文件中分配application.properties
属性即可实现这一目的(参见documentation)。