Как определить docker cli сервис в docker-compose - PullRequest
0 голосов
/ 18 марта 2019

У меня есть файл docker-compose, который запускает несколько сервисов.

services:

  cli:
    build:
      context: .
      dockerfile: docker/cli/Dockerfile

    volumes:
      - ./drupal8site:/var/www/html/drupal8site


  drupal:
    container_name: drupal
    build:
      context: .
      dockerfile: docker/DockerFile.drupal
      args:
        DOC_ROOT: /var/www/html/drupal8site
    ports:
      - 80:80
    volumes:
      - ./drupal8site:/var/www/html/drupal8site
    restart: always
    environment:
      APACHE_DOCUMENT_ROOT: /var/www/html/drupal8site/web    

  mysql:
    image: mysql:5.7
    ports:
      - 3306:3306
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root

Я хотел бы добавить другой сервис, который будет контейнером, в котором я мог бы запускать команды CLI (composer, drush для drupal, php и т. д.).

Следующий Dockerfile был таким, каким я изначально определил службу cli, но он останавливается сразу после запуска.Как мне определить его, чтобы он был частью моего docker-compose, разделял мой подключенный том, и я мог интерактивно подключаться к нему и запускать на нем команды CLI?

FROM php:7.2-cli

#various programs
RUN apt-get update \
    && apt-get install vim --assume-yes \
    && apt-get install git --assume-yes \
    && apt-get install mysql-client --assume-yes


CMD ["bash"]

Спасибо, Yaron

1 Ответ

1 голос
/ 18 марта 2019

Если вы хотите запускать автоматические сценарии на образах докеров, это, очевидно, работа для ci-pipe.Вы можете использовать CloudFoundry или OpenStack для этого.

Но в этом посте есть много других вопросов:

1.) Как я могу поделиться своим подключенным томом:

Выможет передать том с параметром -v контейнеру.Например:

docker run -it -d -v $(pwd)/localFolder:/exposedFolderFromDocker mydockerhub/myawesomeimage

2.) Могу ли я подключиться к нему в интерактивном режиме и запустить на нем команды CLI

docker exec -it docker_cli_1 bash

Я рекомендую реализовать функции образа докера для отдельного докера.изображения Dockerfile.Например, копирование и запуск подготовленного shell-скрипта:

# your Dockerfile
FROM php:7.2-cli

#various programs
RUN apt-get update \
    && apt-get install vim --assume-yes \
    && apt-get install git --assume-yes \
    && apt-get install mysql-client --assume-yes

# individual changes
    COPY your_script.sh /
    RUN  chown root:root /your_script.sh && \
         chmod 0755 /your_script.sh
    CMD ["/your_script.sh"]

# a folder to expose
VOLUME /exposedFolderFromDocker

CMD ["bash"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...