Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thiết lập MySQL và nhập kết xuất trong Dockerfile

Phiên bản mới nhất của hình ảnh docker mysql chính thức cho phép bạn nhập dữ liệu khi khởi động. Đây là docker-compo.yml của tôi

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

Ở đây, tôi có data-dump.sql của mình trong docker/data liên quan đến thư mục mà trình soạn thảo-docker đang chạy từ đó. Tôi đang gắn tệp sql đó vào thư mục này /docker-entrypoint-initdb.d trên vùng chứa.

Nếu bạn muốn xem cách này hoạt động như thế nào, hãy xem docker-entrypoint.sh trong GitHub. Họ đã thêm khối này để cho phép nhập dữ liệu

    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

Một lưu ý bổ sung, nếu bạn muốn dữ liệu được duy trì ngay cả sau khi vùng chứa mysql bị dừng và bị xóa, bạn cần có một vùng chứa dữ liệu riêng biệt như bạn thấy trong docker -omp.yml. Nội dung của Dockerfile vùng chứa dữ liệu rất đơn giản.

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

VOLUME /var/lib/mysql

CMD ["true"]

Vùng chứa dữ liệu thậm chí không cần phải ở trạng thái bắt đầu để tồn tại lâu dài.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn dữ liệu đã chọn vào cơ sở dữ liệu

  2. Điều gì sai với cú pháp SQL DELETE FROM này?

  3. Viết các truy vấn PHP PDO dưới dạng `dbName`.`tableName` thay vì` tableName` - tại sao?

  4. Tải lên ảnh CodeIgniter

  5. Chuỗi nối thêm MySQL