如何将Spring Boot RESTful Web Service Docker img部署到EC2?

时间:2018-03-21 12:10:30

标签: spring amazon-web-services docker spring-boot

我尝试做的很简单,将一个Spring Boot RESTful Web服务部署到EC2,以便公开访问。

为此,我需要做以下事情:

  1. 编写Spring Boot Web服务,在本地进行容器化和测试 - 完成
  2. 这是我的Dockerfile:

    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    ARG JAR_FILE
    ADD ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    

    当我在1880本地运行它时,它工作正常(返回静态json)。

    1. 推送到Dockerhub - 完成
    2. 在aws上启动Amazon Linux AMI并使其可访问http(端口80) - 已完成
    3. 安装apache(httpd)并开始 - 完成
    4. 这是我需要帮助的地方

      1. 我从dockerhub运行docker image就像这样

        docker run --rm -p 80:8080 kaspartr/demo
        
      2. 它当然不允许端口被apache占用。如果我停止并运行它已部署但我无法在线访问它。

        有人可以解释一下如何将docker镜像部署到apache中?

        我是否需要更改Dockerfile或其他内容?

        谢谢!

2 个答案:

答案 0 :(得分:1)

通常我在单独的端口上运行应用程序并向前执行docker:

添加你的application.properties

server.port=9001

并添加到docker-compose.yml:

version: '1'
services:
  your-service:
    build: .
    ports:
      - '9001:9001'
    environment:
      SERVICE_URL: http://service:9001/path

答案 1 :(得分:1)

由于Apache已经使用了端口80,因此也无法使容器在端口80上运行。

我的猜测是你计划使用Apache作为容器的反向代理。尝试将容器发布到另一个端口,并使用Apache将端口80代理到容器。