我读旧问题,但无法修复:docker错误:无法访问jarfile



嗨,我是docker新手,正在尝试容器化一个简单的spring引导应用程序。docker文件如下:

版本:赢得11Docker桌面:最新版本dockerfile

FROM openjdk:8-jre-alpine
RUN mkdir app
WORKDIR /app
# Copy the jar to the production image from the builder stage.
COPY target/taco-cloud-*.jar app/taco-cloud.jar
# Run the web service on container startup.
EXPOSE 9090
CMD ["java", "-jar", "taco-cloud.jar"]

docker-compose

version: '2.4'
services:
mysql:
container_name: test-data
image: mysql:latest
networks:
-  kell-network
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=taco_cloud
- MYSQL_USER=kell
- MYSQL_PASSWORD=dskell0502
volumes:
- mysql-data:/var/lib/mysql
- ./schema.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "3307:3306"
web:
container_name: test-web
image: test:ver1
ports:
- "9090:9090"
depends_on:
- mysql
networks:
- kell-network
volumes:
mysql-data:
networks:
kell-network:
driver: bridge

当我试图运行docker-compose时,我得到"错误:无法访问jar文件taco- cloud .jar"test-web |错误:无法访问jfile taco-cloud.jar


我尝试编辑dockerfile,但它仍然不起作用

FROM maven:latest
RUN mkdir /app
WORKDIR /app
COPY . .
EXPOSE 8080
CMD ["mvn", "spring-boot:run"]

# Use the official maven/Java 8 image to create a build artifact: https://hub.docker.com/_/maven
FROM maven:3.5-jdk-8-alpine as builder
# Copy local code to the container image.
RUN mkdir app
WORKDIR /app
COPY pom.xml .
COPY src ./src
# Build a release artifact.
RUN mvn package -DskipTests
# Use the Official OpenJDK image for a lean production stage of our multi-stage build.
# https://hub.docker.com/_/openjdk
# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
FROM openjdk:8-jre-alpine
# Copy the jar to the production image from the builder stage.
COPY --from=builder target/taco-cloud-*.jar app/taco-cloud.jar
# Run the web service on container startup.
EXPOSE 9090
CMD ["java", "-jar", "taco-cloud.jar"]
WORKDIR /app
COPY target/taco-cloud-*.jar app/taco-cloud.jar
  1. AFAIKCOPY命令不支持*通配符。您必须知道确切的文件名或将其重命名为taco-cloud.jar之前构建映像并运行COPY taco-cloud.jar ./taco-cloud.jar
  2. 即使复制taco-cloud-*.jar,也会复制到/app/app/taco-cloud.jar。你指的是COPY {original_file} /app/taco-cloud.jar还是COPY {original_file} ./taco-cloud.jar?

最新更新