Teamcity docker映像生成无法创建生成目录权限被拒绝

Teamcity docker映像生成无法创建生成目录权限被拒绝,docker,permissions,teamcity,Docker,Permissions,Teamcity,我在teamcity(TC)的工作中塑造了一个码头工人形象。Dockerfile如下所示。本质上,它不能以root用户身份运行,因此新用户将作为项目创建。代码库位于/home/projects中,生成输出在/home/projects/build下创建,用户在projects中创建生成输出。当我使用手动docker命令构建时,构建工作正常。同一安装程序从TC生成失败,无法创建/home/projects/build目录-权限被拒绝 FROM ubuntu:12.04.5 ENV DEBIAN_F

我在teamcity(TC)的工作中塑造了一个码头工人形象。Dockerfile如下所示。本质上,它不能以root用户身份运行,因此新用户将作为项目创建。代码库位于/home/projects中,生成输出在/home/projects/build下创建,用户在projects中创建生成输出。当我使用手动docker命令构建时,构建工作正常。同一安装程序从TC生成失败,无法创建/home/projects/build目录-权限被拒绝

FROM ubuntu:12.04.5
ENV DEBIAN_FRONTEND=noninteractive

# extra metadata
LABEL version="1.0"
LABEL description="First image with Dockerfile."

RUN apt-get update && apt-get install -y \
build-essential \
dialog \
autoconf \
automake \
libtool \
...
sudo \
git
如上所述(注释掉的行),我尝试了几种创建用户项目的不同方法。我不太明白谁需要这里的权限来创建/主页/项目/构建。。。?是TC用户需要权限,还是根用户或用户项目。可能不是项目,因为所有这些都在非TC构建中工作。您对Teamcity构建作业中docker容器的权限如何工作有何想法

[15:48:33]  [Step 1/1] Creating dockerbuild_supernova_run ... 
[15:48:33]  [Step 1/1] Creating dockerbuild_supernova_run ... done
[15:48:33]  [Step 1/1] make/gdb.mk:13: warning: overriding commands for target `/home/projects/build/platform/gdb-7.0.1/.source'
[15:48:33]  [Step 1/1] make/cross-gdb.mk:12: warning: ignoring old commands for target `/home/projects/build/platform/gdb-7.0.1/.source'
[15:48:33]  [Step 1/1] make/u-boot.mk:31: warning: overriding commands for target `/Makefile'
[15:48:33]  [Step 1/1] make/at91boot.mk:23: warning: ignoring old commands for target `/Makefile'
[15:48:33]  [Step 1/1] mkdir -p /home/projects/build/platform
[15:48:33]  [Step 1/1] mkdir: cannot create directory `/home/projects/build': Permission denied
[15:48:33]  [Step 1/1] make: *** [/home/projects/build/platform] Error 1
[15:48:34]  [Step 1/1] 2
[15:48:34]  [Step 1/1] Process exited with code 2
docker-compose.yml

version: "3.8"
services:
somename:
   image: imagename:1.0
   user: $UID:$GID
   build: .
   volumes:
       - ../:/home/somehome
       - ../:/home/whateverotherdirectories
   working_dir: /home/somehome
   stdin_open: true # docker run -i
   tty: true        # docker run -t
build-container.sh

export UID=$(id -u)
export GID=$(id -g)

docker-compose -f ./docker-compose.yml run --rm supernova bash -c "make"

在此处输入代码

您可以共享有关您的构建的更多信息吗?似乎您正在运行
make
。您是否正在构建此图像,然后在其中执行
make
命令?您能否分享有关docker容器如何运行的详细信息,特别是
docker run
命令?似乎没有任何东西无法生成docker映像。从脚本:buildimage.sh:docker compose-f./docker-compose.yml run--rm myimage bash-c“make”docker compose:version:“3.8”服务:myimage:image:myimage:1.0构建:。卷:-../:/home/projects-../toolchain/:/home/toolchain working_dir:/home/projects stdin_open:true#docker run-i tty:true#docker run-t这是我所做的一切。抱歉,无法在上述消息中保留格式。我使用一个运行docker compose和dockerfileNp的简单脚本,您应该编辑您的问题以包含该信息。看起来您正在将当前目录装入容器中的/home/projects/,因此权限和uid/gid将来自主机。为此,您需要容器中用户的uid与主机上执行此脚本所在位置的所有者的uid相匹配。teamcity服务器上的
/home/projects/
上的uid不得为1000。检查服务器上的权限和uid/gid(
ls-al/home/projects/
)。