Есть ли способ запустить команду после сборки одного из двух контейнеров в docker-compose - PullRequest
0 голосов
/ 10 июля 2019

Следующий случай:

Я хочу собрать с помощью docker-compose два контейнера.Один из них - MySQL, другой - файл .war, выполняемый с использованием Springboot, который зависит от MySQL и нуждается в рабочем БД.После того, как я создаю контейнер mysql, я хочу заполнить базу данных моим файлом mysqldump, прежде чем будет создан другой контейнер.

Моей первой идеей было добавить его в мой файл Dockerfile mysql как

    #RUN mysql -u root -p"$MYSQL_ROOT_PASSWORD"' < /appsb.sql

но, конечно, он хочет выполнить его во время строительства.

Я понятия не имею, как сделать это в файле docker-compose как Command, возможно, это сработает.Или мне нужно построить скрипт?

docker-compose.yml

version: "3"  
services:  
  mysqldb:  
    networks:  
      - appsb-mysql  
    environment:  
      - MYSQL_ROOT_PASSWORD=rootpw  
      - MYSQL_DATABASE=appsb  
    build: ./mysql  


  app-sb:  
    image: openjdk:8-jdk-alpine  
    build: ./app-sb/  
    ports:  
      - "8080:8080"  
    networks:  
     - appsb-mysql  
    depends_on:  
    - mysqldb  

networks:
- appsb-mysql:

Dockerfile для mysqldb:

FROM mysql:5.7
COPY target/appsb.sql /
#RUN mysql -u root -p"$MYSQL_ROOT_PASSWORD"' < /appsb.sql

Dockerfile для других приложений Springbootb:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/appsb.war /
RUN java -jar /appsb.war

1 Ответ

0 голосов
/ 10 июля 2019

Вот аналогичная проблема (загрузка dump.sql при запуске) для контейнера MySQL: Настройка MySQL и импорт дампа в Dockerfile .

Опция 1: импорт черезкоманда в Dockerfile.

Вариант 2: exec.bash-скрипт из docker-compose.yml

Вариант 3: exec.команда импорта из docker-compose.yml

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