Skip to content
Snippets Groups Projects
ws.Dockerfile 1.57 KiB
Newer Older
  • Learn to ignore specific revisions
  • ####
    # Run hazard web services.
    #
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    # Pull Docker Image:
    #   - Production (stable): docker pull usgs/nshmp-haz-ws:production-latest
    #   - Staging (latest, main branch of repo): docker pull usgs/nshmp-haz-ws:staging-latest
    #   - Development (developer forks): docker pull usgs/nshmp-haz-ws:development-latest
    #
    
    # Build locally:
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    #   docker build
    #       -f ws.Dockerfile
    #       -t nshmp-haz-ws .
    
    #
    # Run locally:
    #   docker run -p 8080:8080
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    #       -v "path/to/model:/app/model"
    
    #       nshmp-haz-ws
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    ARG BUILD_IMAGE=code.usgs.gov:5001/devops/images/usgs/java:11
    ARG FROM_IMAGE=code.usgs.gov:5001/devops/images/usgs/java:11
    
    ####
    
    # Builder image: Build jar file.
    
    ####
    
    FROM ${BUILD_IMAGE} as builder
    
    
    ARG builder_workdir
    
    # For GitLab CI/CD
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    ARG CI_PROJECT_URL=null
    ARG CI_COMMIT_BRANCH=null
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    WORKDIR /app
    
    
    COPY . .
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    USER root
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    
    
    RUN ./gradlew assemble
    
    # Application image: Run jar file.
    
    ####
    
    FROM ${FROM_IMAGE}
    
    
    LABEL maintainer="Peter Powers <pmpowers@usgs.gov>, Brandon Clayton <bclayton@usgs.gov>"
    
    
    ENV CONTEXT_PATH="/"
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    ENV JAVA_OPTS="-Xms2g -Xmx8g"
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    ENV MODELS_DIRECTORY="/app/model"
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    WORKDIR /app
    
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    USER root
    
    
    RUN mkdir /asset-output  \
        && chown -R usgs-user:usgs-user /app \
        && chown -R usgs-user:usgs-user /asset-output
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    
    USER usgs-user
    
    COPY --from=builder --chown=usgs-user:usgs-user /app/build/libs/nshmp-haz.jar .
    COPY --from=builder --chown=usgs-user:usgs-user /app/nshms.yml .
    
    VOLUME [ "${MODELS_DIRECTORY}" ]
    
    EXPOSE 8080
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
    ENTRYPOINT java \
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
        ${JAVA_OPTS} \
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
        -jar \
        nshmp-haz.jar \
    
        "-Dmicronaut.server.context-path=${CONTEXT_PATH}" \
    
    Clayton, Brandon Scott's avatar
    Clayton, Brandon Scott committed
        --model="${MODELS_DIRECTORY}";