Создание засеянного контейнера MS SQL с томом, смонтированным на хосте, с помощью docker -compose на Linux - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать серверный контейнер SQL, в котором после начальной настройки должны быть некоторые данные. Пока что я могу успешно создать засеянное изображение с томом, управляемым Docker, используя мой Dockerfile:

FROM mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04

EXPOSE 1433

RUN mkdir -p /opt/scripts
COPY seed.sql /opt/scripts

ENV MSSQL_SA_PASSWORD=Passw@rd1
ENV ACCEPT_EULA=Y

RUN ( /opt/mssql/bin/sqlservr --accept-eula & ) | grep -q "Service Broker manager has started" \
    && /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Passw@rd1' -i /opt/scripts/seed.sql \
    && pkill sqlservr

VOLUME /var/opt/mssql

CMD /opt/mssql/bin/sqlservr

, который я затем запускаю в контейнере с помощью следующей команды:

docker run --name db-test -p 21143:1433  -v myVolume:/var/opt/mssql sql-db-test

, где sql-db-test - это изображение, которое я создал с помощью вышеуказанного файла Dockerfile. С помощью docker volume ls я могу проверить, что том успешно создан. Примечание. Я не пытаюсь смонтировать том по относительному пути, поскольку это невозможно при использовании команды запуска docker, как описано в этой проблеме на github .

Также настройка контейнера с этой настройкой с помощью docker -compose.yml работает нормально, и том создается:

version: "3.6"
services:
    db-sqlserv:
        build: sql-server
        ports:
            - "21143:1433"
        volumes:
            - compVolume:/var/opt/mssql
volumes:
    compVolume:

Однако теперь я пытаюсь смонтировать том на машине :

version: "3.6"
services:
    db-sqlserv:
        build: sql-server
        user: "0:0" # Run as root 
        ports:
            - "21143:1433"
        volumes:
            - ./volume-sql-server:/var/opt/mssql

Но здесь я сталкиваюсь с проблемой: База данных пуста (только таблицы по умолчанию). Похоже, что вся база данных повторно инициализируется при запуске контейнера.

И в этот момент я полностью заблокирован. Я не нашел никакой полезной информации в документации docker -compose и уже исправил проблему с правами доступа к файлу, определив пользователя как root. Было бы замечательно, если бы кто-то мог указать, откуда может возникнуть проблема и как ее решить.

Мои настройки:

  • Хост-машина: Ubuntu 18.04
  • Docker версия: 18.09.9
  • docker - составная версия: 1.23.2

Обновление: Тем временем я проверил свой docker составить скрипт на Windows машине. После публикации папки в настольном приложении, как описано в документах Windows. Поэтому я предполагаю, что я должен сделать то же самое для Linux. Я сделаю обновление, как только найду решение, но все же буду благодарен за любую помощь.

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