Запустите команды sudo из docker compose - PullRequest
2 голосов
/ 19 марта 2019

Я использую экземпляр AWS EC2 и установил docker и docker-compose на AWS linux.

Теперь у меня есть docker-compose.yml файл, который пытается выполнить команду mkdir -p /workspace/.m2/repositories.Теперь эта команда требует sudo , в противном случае выдает ошибку разрешений.

Я пытался добавить sudo внутри docker-compose , но выдает ошибкупоговорка

sudo: команда не найдена

Я могу запустить эту команду вручную и могу прокомментировать эту команду внутри docker-compose.yml файла, но мне интересно знать, что там естьлюбой способ выполнить эту команду из docker-compose.yml файла?

Ответы [ 2 ]

3 голосов
/ 19 марта 2019

У меня может быть решение для вас.Я думаю, вы можете расширить 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.

2 голосов
/ 21 марта 2019

Я один из разработчиков на денежный ящик / денежный ящик . Мы рады, что кто-то испытывает наши образы Docker для разработки:)

Теперь эта команда требует sudo, иначе она выдает ошибку прав доступа.

То, что вы испытываете, скорее всего, проблема с разрешением. Наши образы Docker работают как user.group = 1000.1000 (который обычно является первым пользователем во многих дистрибутивах). Я подозреваю, что ваш UID / GID отличается, что вы можете проверить, выполнив id -u и id -g. Если это что-то отличное от 1000.1000 - вам нужно обойти это решение:

  1. Создать пользователя и группу с идентификаторами 1000.1000:
    groupadd -g 1000 jenkins
    useradd -u 1000 -g 1000 -s /bin/bash -m jenkins
    
  2. Chown / chmod клонированный проект сейфа:
    chown -R `id -u`.1001 /path/to/strongbox-project
    chmod -R 775 /path/to/strongbox-project
    
  3. Попробуйте еще раз docker-compose up

Этот образ не имеет установленного sudo, поэтому вы не сможете его выполнить. Однако вам это также не нужно, потому что /workspace монтируется из вашей FS (это проект денежного ящика) и в томе будет записано /workspace/.m2/repository.

...