我有一个运行和测试过的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