我正试图在(通过)docker中运行项目。它在unix服务器上正常运行。我在本地计算机上使用Windows。
docker-compose.yml
内容:
version: '3'
services:
sftp:
image: atmoz/sftp
restart: on-failure
command: missftp:missftp:::destWorking,destRejected,destSuccess,attachments
mailer:
image: mailhog/mailhog
ports:
- 8025:8025
- 1025:1025
restart: on-failure
mongo:
image: mongo
restart: on-failure
mongo-express:
image: mongo-express
restart: on-failure
ports:
- 8081:8081
environment:
- ME_CONFIG_MONGODB_SERVER=mongo
- ME_CONFIG_BASICAUTH_USERNAME=admin
- ME_CONFIG_BASICAUTH_PASSWORD=1234
data-service:
build:
context: .
dockerfile: Dockerfile.data-service
ports:
- 8801:8801
- 8802:8802
restart: on-failure
volumes:
- /opt/app/mis/attachments:/attachments
environment:
- SPRING_DATA_MONGODB_HOST=mongo
- SPRING_MAIL_HOST=mailer
- SPRING_MAIL_USERNAME=apikey
- SPRING_MAIL_PASSWORD=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
- SPRING_MAIL_PORT=465
...
upload-service:
build:
context: .
dockerfile: Dockerfile.upload-service
ports:
- 8082:8082
- 8083:8083
restart: on-failure
environment:
- SPRING_DATA_MONGODB_HOST=mongo
...
Dockerfile.data-service
文件内容:
FROM gradle:alpine
COPY / ./
RUN gradle build
ENTRYPOINT java -jar ./mis-data-service/build/libs/mis-data-service-0.1.jar
然后执行以下命令:
docker-compose -f docker-compose.yml up
结果:
Building data-service
Step 1/4 : FROM gradle:alpine
---> f438b7d58d0a
Step 2/4 : COPY / ./
---> Using cache
---> b72d0e76b86c
Step 3/4 : RUN gradle build
---> Running in 7ba780a524e5
FAILURE: Build failed with an exception.
* What went wrong:
Failed to load native library 'libnative-platform.so' for Linux amd64.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
ERROR: Service 'data-service' failed to build: The command '/bin/sh -c gradle build' returned a non-zero code: 1
我错了什么?如何解决此错误?
我使用Gradle 4.6
答案 0 :(得分:3)
请参阅https://stackoverflow.com/a/39345276/372019:
请在RUN gradle build
命令之前的Dockerfile中添加以下命令:
RUN apk add --no-cache libstdc++
答案 1 :(得分:1)
github中似乎存在与此相关的几个问题,但未明确提及Windows主机
人们提到的一些事情正在为他们解决问题:
chmod 000 $GRADLE_USER_HOME
--privileged
标志以root身份运行的Dockerfile:
FROM gradle:alpine
USER root
答案 2 :(得分:1)
由于gradle机器没有执行Gradle命令的完全权限, 您可以尝试以“ root用户”用户权限运行docker计算机吗?
FROM gradle:alpine
USER root
或者您使用“ -u root”参数执行docker run命令,
有关更多详细信息,请参见:https://github.com/keeganwitt/docker-gradle/issues/29