Dockerfile создает образ с помощью Python и MySQL - PullRequest
0 голосов
/ 08 марта 2019

У меня есть два контейнера "web" и "db".У меня есть существующий файл данных в формате CSV.

Проблема в том, что я могу инициализировать базу данных MySQL схемой, используя docker-compose, или просто запустить с параметрами, но как мне импортировать существующие данные?У меня есть сценарий Python для анализа и фильтрации данных, а затем вставить его в базу данных, но я не могу запустить его в контейнере "DB" из-за одного изображения MySQL.

Update1

version: '3'
services:
  web:
    container_name: web
    build: .
    restart: always
    links:
      - db
    ports:
      - "5000:5000"
  db:
    image: mysql
    container_name: db
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_DATABASE: "test"
      MYSQL_USER: "test"
      MYSQL_PASSWORD: "test"
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    ports:
      - "33061:3306"

Существует скрипт Python для чтения данных из файла CSV и вставки их в базу данных, который работает нормально.Теперь я хочу запустить скрипт после настройки контейнера MySQL.(Я установил соединение с Python и MySQL в контейнере)

В противном случае, у кого-нибудь есть лучшее решение для импорта существующих данных?

Ответы [ 2 ]

1 голос
/ 09 марта 2019

Образ докера MySQL имеет возможность выполнять сценарии оболочки или файлы sql, если эти файлы сценариев / sql смонтированы в /docker-entrypoint-initdb.d для работающего контейнера, как описано в здесь и здесь .Поэтому я предлагаю вам написать файл SQL, который читает файл CSV (который вы должны смонтировать в свой контейнер, чтобы файл sql мог его прочитать), чтобы восстановить его в MySQL, возможно, что-то похожее на этот ответ илинаписать bash-скрипт для импорта csv в mysql, что бы вам ни помогло.

Вы можете проверить Инициализация свежего экземпляра на официальной странице dockerhub для mysql

0 голосов
/ 09 марта 2019

Из Dockerfile вы можете вызвать скрипт (Entrypoint).В этом скрипте вы можете вызвать ваш скрипт на python.Например:

DockerFile:

FROM php:7.2-apache

RUN apt-get update    
COPY ./entrypoint.sh /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

Это запустит ваш скрипт точки входа в контейнере приложения.Убедитесь, что в описании контейнера приложения есть атрибут depends on.

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