Здравствуйте, используя Docker столкнулся с проблемой:
Указанные в docker-compose volues имеют владельца и группу root, вот пример docker-compose.yml
service:
image: java/service
build:
context: .
dockerfile: .docker/java.Dockerfile
args:
- UID
- GID
command: "java -jar file-service/file-service-rest/target/file-service.jar"
restart: always
user: "${UID}:${GID}"
ports:
- 4592:4592
volumes:
- ./:/usr/src/app
- ./file-service/file-service-rest/target/classes/image:/usr/src/app/image
environment:
JAVA_OPTS: -Dspring.config.location=file-service/settings.properties
healthcheck:
test: curl -f http://localhost:4592/check
java.Dockerfile выглядит следующим образом:
FROM openjdk:17
ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN groupadd --gid $GID node \
&& useradd --uid $UID --gid node --shell /bin/bash --create-home node
USER node
WORKDIR /usr/src/app
ENTRYPOINT ["java"]
.env файл:
UID=1001
GID=1001
После выполнения команды
docker-composer up -d --build
создается директория
image с правами
root