How to run docker exec on docker-compose.yml

I am trying to create mysql database schema at runtime of docker-compose.yml file

  version: "2"
  services:
  web:
    build: docker
    ports:
      - "8080:8080"

  environment:
    - MYSQL_ROOT_PASSWORD=root

   mysql:
   image: mysql:latest
    environment:
     - MYSQL_ROOT_PASSWORD=root
     - MYSQL_DATABASE=test

     ports:
      - "3306:3306"
   links:
    - web

 onrun:
 command: "docker exec -i test_mysql_1 mysql -uroot -proot test <dummy1.sql"

I tried onrun but it does not work. I create the first image, but pull the second image out of the docker hub. kind help on how to execute the following command after docker build

+4
source share
2 answers

There docker-composeis nothing like it onrun. This will only result in containers and command execution. You now have several options.

Use mysql image initialization

mysql:
 image: mysql:latest
 environment:
   - MYSQL_ROOT_PASSWORD=root
   - MYSQL_DATABASE=test
  volumes: 
    - ./dummy1.sql:/docker-entrypoint-initdb.d/dummy1.sql
 ports:
  - "3306:3306"

You can create your sql files inside /docker-entrypoint-initdb.dinside the container

Use bash script

docker-compose up -d
# Give some time for mysql to get up
sleep 20
docker-compose exec mysql mysql -uroot -proot test <dummy1.sql

DB

version: "2"
services:
  web:
    build: docker
    ports:
      - "8080:8080"

  environment:
    - MYSQL_ROOT_PASSWORD=root

   mysql:
   image: mysql:latest
    environment:
     - MYSQL_ROOT_PASSWORD=root
     - MYSQL_DATABASE=test

     ports:
      - "3306:3306"
   mysqlinit:
     image: mysql:latest
     volumes:
       - ./dummy1.sql:/dump/dummy1.sql
     command: bash -c "sleep 20 && mysql -h mysql -uroot -proot test < /dump/dummy1.sql"

, DB , mysqlinit

+5

, . , .sh,.sql .sql.gz, /docker -entrypoint-initdb.d. .

https://hub.docker.com/_/mysql/

, (postgresql, mysql,...) . *.sql/*.sh :

db:
  image: mysql:latest
  volumes: 
    - ./db/entrypoint:/docker-entrypoint-initdb.d
  environment:
    - MYSQL_ROOT_PASSWORD=iamgroot
    - MYSQL_DATABASE=gotg

sql/sh , .

0

Source: https://habr.com/ru/post/1684036/


All Articles