Docker mysql 环境

Docker mysql environment

我有一个基于 FROM php:alpine 的 Dockerfile,我正在尝试将 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"

由于您是新手 - 始终尝试通过复制现成的工作代码并分解该代码中正在执行的操作来学习。

对于Docker:

  1. 您可以查看 mysql 的 docker 存储库 - https://hub.docker.com/_/mysql/ 在描述部分下,您将看到 link 到不同 MySQL 版本的各种 docker 文件。
  2. 将其中之一作为您的灵感来源,例如 link 到 8.0/Docker 文件:https://github.com/docker-library/mysql/blob/fc3e856313423dc2d6a8d74cfd6b678582090fc7/8.0/Dockerfile
  3. 请注意,在该 docker 文件中的 mysql 安装说明之后,有入口点和 CMD 说明。

总的来说:

因为您希望 php 和 mysql 从 docker 开始工作 - 我的建议是让您了解 docker-compose。 Docker 容器可以通过多种方式 运行 并且 docker-compose 允许您启动多个 docker 容器,并在它们之间共享一些文件夹。在那种情况下,您可能希望启动单独的 mysql 容器和单独的 php 容器,在它们之间共享主机数据文件夹并启动您的代码。

另外,在线观看一些视频教程 - 它们详细解释了 docker 的基本原理及其工作原理。