FROM openjdk:17.0.2-jdk-oracle
EXPOSE 8083
ARG JAR_FILE
VOLUME ["/data"]
VOLUME ["/config"]
ADD ./sp-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java", "-jar","/app.jar"]
这个是个文件下载工具 下载出来的文件想给指定的用户权限
我看别人的 docker 运行时候 添 UID 和 GID 就可以这个是怎么实现的呢
就像这样 docker run -d -e Gid=100 -e UID=100 ....... 像弄成这样的 那位兄弟会的给说说
1
Maxwe11 2022-08-18 17:41:28 +08:00
没搞过,直接 docker exec bash 对文件赋权呢?
|
2
AoEiuV020CN 2022-08-18 17:45:25 +08:00
dockerfile 有 USER 命令可以指定用于执行后续命令的用户,
但指定的是 docker 镜像中的用户,不存在的话首先要 useradd , 应该是没有特别容易的方法直接指定 uid, 只是下载一个文件或者一个目录的话考虑下载之后 chmod , |
3
AoEiuV020CN 2022-08-18 17:47:05 +08:00 1
搜了个大概可行的代码,总之就是先添加用户再指定用户,具体 id 走参数传入,
https://stackoverflow.com/a/44683248 FROM ubuntu:xenial-20170214 ARG UNAME=testuser ARG UID=1000 ARG GID=1000 RUN groupadd -g $GID -o $UNAME RUN useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME USER $UNAME CMD /bin/bash docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) \ -f bb.dockerfile -t testimg . |
4
lovelylain 2022-08-18 18:48:42 +08:00 via Android
@AoEiuV020CN 要是容器内只有一个 go 程序没有 useradd 命令呢,怎么以非 root 用户运行?
|
6
ragnaroks 2022-08-22 08:59:04 +08:00
PGID PUID 是配合 supervisor 使用的,参考 https://hub.docker.com/r/linuxserver/qbittorrent ,对于自己创建的镜像,最简单的办法是指定此容器用户
FROM openjdk:17.0.2-jdk-oracle EXPOSE 8083 ARG JAR_FILE VOLUME ["/data"] VOLUME ["/config"] ADD ./sp-0.0.1-SNAPSHOT.jar /app.jar USER user1 ENTRYPOINT ["java", "-jar","/app.jar"] |