Окружение Docker MySQL

У меня есть Dockerfile, основанный на php:alpine и я пытаюсь добавить MySQL в сборку.

FROM php:alpine

COPY test-data/ /var/www/

RUN apk add --update --no-cache \
mysql

# Composer
RUN curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer
ENV COMPOSER_ALLOW_SUPERUSER=1

WORKDIR /var/www

Моя проблема в том, что после успешной сборки я попытался запустить контейнер с переопределением среды mysql, но не могу войти в mysql внутри контейнера.

$ docker run -e MYSQL_DATABASE=homestead -e MYSQL_USER=homestead -e MYSQL_PASSWORD=secret -e MYSQL_ROOT_PASSWORD=secret -ti --rm idecardo /bin/sh

Проверка входа в MySQL не удалась

$ mysql -uroot -p # with password "secret"

0

Решение

Поскольку вы новичок — всегда старайтесь учиться, копируя готовый рабочий код и разбивая то, что делается в этом коде.

Для докера:

  1. Вы можете увидеть докерское хранилище для mysql — https://hub.docker.com/_/mysql/
    В разделе описания вы увидите ссылки на различные файлы Docker для разных версий MySQL.
  2. Возьмите один из них в качестве источника вдохновения, например, ссылку на 8.0 / Dockerfile: https://github.com/docker-library/mysql/blob/fc3e856313423dc2d6a8d74cfd6b678582090fc7/8.0/Dockerfile
  3. Обратите внимание, что после инструкций по установке mysql в этом dockerfile есть инструкции Entrypoint и CMD.

В общем:

Так как вы хотите, чтобы php и mysql работали из docker, я советую вам узнать о docker-compose. Docker-контейнеры можно запускать различными способами, а docker-compose позволяет запускать несколько Docker-контейнеров, совместно использовать некоторые папки между ними. В этом сценарии вы захотите запустить отдельный контейнер MySQL и отдельный контейнер PHP, разделить между собой папки с данными хоста и запустить свой код.

Кроме того, посмотрите некоторые видеоуроки онлайн — они подробно объясняют основы того, что такое докер и как он работает.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector