Jenkins集成:docker-compose 权限问题
Jenkins集成:docker-compose 权限问题一、问题:使用docker-compose up -d 启动服务器时,生成到文件是以root身份创建,不安全。二、原因:docker-compose 默认以root用户启容器三、 解决方案:使用非root用户dockerfile文件中创建创建非root用户,在CMD之前,切换到此用户FROM xxx# create non-privileg
·
Jenkins集成:docker-compose 权限问题
一、问题:使用docker-compose up -d 启动服务器时,生成到文件是以root身份创建,不安全。

二、原因:docker-compose 默认以root用户启容器
三、 解决方案:使用非root用户
- dockerfile文件中创建创建非root用户,在CMD之前,切换到此用户
FROM xxx
# create non-privileged user and group
RUN groupadd -r mahuaping -g 1001 && useradd mahuaping -u 1001 -g mahuaping
...
USER 1001:1001
CMD ["start"]
- docker-compose.yml 中使用非root用户
添加user,uid & gid: 1001;
增加volumes卷"log:/var/workspacedo/log":指定device: ./log
version: '3'
services:
app:
build:
context: .
dockerfile: pack/Dockerfile
args:
conf: pack/conf
script: pack/script
image: qa/app-server:${TAG}
user: 1001:1001
volumes:
- "log:/var/workspace/log"
volumes:
log:
driver_opts:
type: none
device: ./log
- pipeline中,启动docker-compose up
复制docker-compose.yml文件到src目录,并创建log目录(当前用户为mahuaping,可以根据项目需要修改用户)
// Run app container.
stage("启动服务") {
steps {
script {
def standalone_path = "pack/standalone"
sh "cp ${standalone_path}/docker-compose.yml src"
sh "mkdir -p src/log"
dir("src") {
sh (
""" \
TAG=latest \
docker-compose up \
-d \
"""
)
}
}
}
}
四、成功更改log目录以及子目录权限

更多推荐
所有评论(0)