sql >> Databasteknik >  >> RDS >> Mysql

Konfigurera MySQL och importera dump i Dockerfile

Den senaste versionen av den officiella mysql docker-bilden låter dig importera data vid start. Här är min docker-compose.yml

data:
  build: docker/data/.
mysql:
  image: mysql
  ports:
    - "3307:3306"
  environment:
    MYSQL_ROOT_PASSWORD: 1234
  volumes:
    - ./docker/data:/docker-entrypoint-initdb.d
  volumes_from:
    - data

Här har jag min data-dump.sql under docker/data vilket är relativt mappen som docker-compose körs från. Jag monterar den sql-filen i den här katalogen /docker-entrypoint-initdb.d på behållaren.

Om du är intresserad av att se hur detta fungerar, ta en titt på deras docker-entrypoint.sh i GitHub. De har lagt till detta block för att tillåta import av data

    echo
    for f in /docker-entrypoint-initdb.d/*; do
        case "$f" in
            *.sh)  echo "$0: running $f"; . "$f" ;;
            *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f" && echo ;;
            *)     echo "$0: ignoring $f" ;;
        esac
        echo
    done

En ytterligare notering, om du vill att data ska finnas kvar även efter att mysql-behållaren har stoppats och tagits bort, måste du ha en separat databehållare som du ser i docker-compose.yml. Innehållet i databehållaren Dockerfile är mycket enkelt.

FROM n3ziniuka5/ubuntu-oracle-jdk:14.04-JDK8

VOLUME /var/lib/mysql

CMD ["true"]

Databehållaren behöver inte ens vara i startläge för beständighet.



  1. Ange käll-IP för ADO-anslutning från Delphi till MySQL

  2. Uppdateringssekvens för specifikt tillstånd - Oracle

  3. Hur man får kumulativ summa

  4. Infogar enstaka citattecken i JDBC för SQL Query fungerar inte