我正在使用 AWS EC2实例,并已在AWS Linux上安装了 docker 和 docker-compose 。
现在我有一个 docker-compose.yml 文件,它正在尝试命令mkdir -p /workspace/.m2/repositories
。现在,此命令需要 sudo ,否则会出现权限错误。
我尝试在 docker-compose 中添加 sudo ,但这给我一个错误提示
sudo:找不到命令
我可以手动运行此命令,并且可以在docker-compose.yml
文件中注释该命令,但是我很想知道有什么方法可以从docker-compose.yml
文件内部运行该命令吗?
答案 0 :(得分:3)
我可能为您提供解决方案。您可以在自定义strongbox
中扩展Dockerfile
图像以解决我认为的这个问题。
创建一个新的Dockerfile
,就像这样:
Dockerfile
FROM strongboxci/alpine:jdk8-mvn-3.5
USER root
RUN mkdir -p /workspace/.m2/repositories
RUN chown jenkins:jenkins /workspace/.m2/repositories
USER jenkins
然后使用如下所示的图像进行构建:
docker build -t mystrongbox:01 .
最后将docker-compose.yml
文件更新为此:
docker-compose.yml
version: '2'
services:
strongbox-from-web-core:
image: mystrongbox:01
command:
- /bin/bash
- -c
- |
echo ""
echo "[NOTICE] This will take at least 2 to 5 minutes to start depending on your machine and connection!"
echo ""
echo " Open http://localhost:48080/storages to browse the repository contents."
echo ""
sleep 5
mkdir -p /workspace/.m2/repositories
mvn clean install -DskipTests -Dmaven.repo.local=/workspace/.m2/repositories
cd strongbox-web-core
mvn spring-boot:run -Dmaven.repo.local=/workspace/.m2/repositories
ports:
- 48080:48080
volumes:
- ./:/workspace
working_dir: /workspace
最后使用:
docker-compose up
然后,您将已经在映像中创建了目录,并将所有权设置为jenkins
用户。
答案 1 :(得分:2)
我是strongbox/strongbox的开发人员之一。我们很高兴有人尝试使用我们的Docker映像进行开发:)
现在此命令需要sudo,否则会出现权限错误。
您遇到的问题很可能是权限问题。我们的Docker映像以user.group = 1000.1000
的身份运行(通常是许多发行版中的第一个用户)。我怀疑您的UID / GID是不同的,可以通过执行id -u
和id -g
进行检查。如果不是1000.1000
,则需要采取解决方法:
1000.1000
的用户和组:
groupadd -g 1000 jenkins
useradd -u 1000 -g 1000 -s /bin/bash -m jenkins
chown -R `id -u`.1001 /path/to/strongbox-project
chmod -R 775 /path/to/strongbox-project
docker-compose up
此映像未安装sudo
,因此您将无法执行该映像。但是,您也不需要它,因为/workspace
是从FS挂载的(这是Strongbox项目),它将在卷中写入/workspace/.m2/repository
。