简体   繁体   English

如何使用Docker compose创建一个mysql数据库?

[英]How can I create a mysql db with Docker compose?

I'm trying to host on docker an application which uses MySQL db. 我正在尝试在docker上托管一个使用MySQL db的应用程序。 I'm using docker compose. 我正在使用docker compose。 my yml file looks like this: 我的yml文件如下所示:

version: '2'
volumes:
  data_sql:    
services:  
medical-mysql:
    image: mysql
    hostname: medical-mysql    
    volumes:    
     - data_sql:/dbcreation.sql
    environment:
      MYSQL_DATABASE: Medical
      MYSQL_ROOT_PASSWORD: root
      STARTUP_SQL: data_sql
    ports:
    - "3306:3306"
  medical-main:
    build: .
    ports:
     - "8080:8080"    
    depends_on:
     - medical-mysql

I have a dbcreation.sql which creates the db schema and is kept in the yml folder. 我有一个dbcreation.sql ,它创建了db模式并保存在yml文件夹中。 When I run the yml file it seems as if the file is not running. 当我运行yml文件时,好像文件没有运行。

What have I missed? 我错过了什么?

Simply just put your .sql file (dbcreation.sql) in a folder (ie. /mysql_init) and add the folder as a volume like this: 只需将.sql文件(dbcreation.sql)放在一个文件夹(即。/ mysql_init)中,然后将该文件夹添加为如下的卷:

volumes:
  - /mysql_init:/docker-entrypoint-initdb.d

The MySQL image will execute all .sql, .sh and .sql.gz files in /docker-entrypoint-initdb.d on startup. MySQL映像将在启动时执行/docker-entrypoint-initdb.d中的所有.sql,.sh和.sql.gz文件。

1) Create dump file dbcreation.sql 1)创建转储文件dbcreation.sql

2) Create import.sh file: 2)创建import.sh文件:

#!/usr/bin/env bash
mysql -u root -p$MYSQL_ROOT_PASSWORD < /tmp/dbcreation.sql

3) Create docker-compose.yaml 3)创建docker-compose.yaml

database:
  image: mysql
  container_name: database.dev
  command: mysqld --user=root --verbose
  volumes:
    - ./dbcreation.sql:/tmp/dbcreation.sql
    - ./import.sh:/tmp/import.sh
  ports:
    - "3306:3306"
  environment:
    MYSQL_DATABASE: "test"
    MYSQL_USER: "test"
    MYSQL_PASSWORD: "test"
    MYSQL_ROOT_PASSWORD: "root"
    MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

"- ./dbcreation.sql:/tmp/dbcreation.sql" - "- local_path:path_inside_container" “ - ./dbcreation.sql:/tmp/dbcreation.sql” - “ - local_path:path_inside_container”

4) Run 4)跑

docker-compose up
docker exec database.dev bash /tmp/import.sh

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM