资源文件在正在运行的Docker容器中不可用

时间:2019-06-06 16:03:22

标签: scala docker

我有一个运行和测试过的sbt项目。 代码需要从资源访问某些文件。

Docker文件已创建并构建。并且容器也在端口9000中运行。但是,当调用 资源就是制造。我收到了nosuchfileException

Error during processing of request: 'src/main/resources/corpusDirectory/corpus.mallet'

我可以在同一路径下看到容器内部的文件。

在容器内部

/src/main/resources/corpusDirectory # ls -ltr
total 472140
-rw-r--r--    1 root     root     483465590 Jun  6 03:18 corpus.mallet

下面是我的dockerFile:

FROM harbor.alpha.io/Apis/scala-sbt:2.12.7_1.2.7 as build

ARG WORK_DIR="mallet"

LABEL Description="Mallet API" \
      Maintainer="dshadab@gmail.com"

COPY . ${WORK_DIR}/

RUN cd ${WORK_DIR} && \
    sbt assembly && \
    mkdir ${WORK_DIR}/out/ && \
    cp ${WORK_DIR}/target/scala-*/mallet*.jar ${WORK_DIR}/out/


FROM openjdk:8-jre-alpine3.8
COPY --from=build ${WORK_DIR}/out /

ENV INTERFACE="0.0.0.0"
ENV PORT="9000"
ENV CACHE_TIME_TO_IDLE="10000s"
ENV CACHE_MAX_CAPACITY=10000
ENV SERVER_MAX_CONNECTIONS=1024
ENV BACKLOG=1024
ENV HOST_POOL_MAX_CONNECTION=1024
ENV HOST_POOL_MAX_OPEN_REQUEST=64
ENV AKKA_WORKERS_COUNT=100
ENV ACTOR_TIMEOUT=200

EXPOSE ${PORT}

CMD cd /out/ &&  \
    java -Dakka.http.caching.lfu-cache.max-capacity=${CACHE_MAX_CAPACITY} \
    -Dakka.http.caching.lfu-cache.time-to-idle=${CACHE_TIME_TO_IDLE} \
    -Dakka.http.server.max-connections=${SERVER_MAX_CONNECTIONS} \
    -Dakka.http.server.backlog=${BACKLOG} \
    -Dakka.http.host-connection-pool.max-connections=${HOST_POOL_MAX_CONNECTION} \
    -Dakka.http.host-connection-pool.max-open-requests=${HOST_POOL_MAX_OPEN_REQUEST} \
    -Dsettings.akka-workers-count=${AKKA_WORKERS_COUNT} \
    -Dsettings.actor-timeout=${ACTOR_TIMEOUT} \
    -jar mallet*.jar \
    --interface ${INTERFACE} \
    --port ${PORT}

用于构建图片的代码

docker build -t mallet:1.0 .

用于运行容器的代码

 docker run -p 9000:9000 -e "JAVA_TOOL_OPTIONS=-Xmx2g" mallet:1.0

0 个答案:

没有答案