php - Docker mysql环境
问题描述
我有一个基于 FROM 的 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"
解决方案
由于您是新手 - 始终尝试通过复制准备好的工作代码并分解该代码中正在执行的操作来学习。
对于 Docker:
- 您可以看到 mysql 的 docker 存储库 - https://hub.docker.com/_/mysql/ 在描述部分下,您将看到指向不同 MySQL 版本的各种 docker 文件的链接。
- 将其中一个作为灵感来源,例如 8.0/Dockerfile 的链接:https ://github.com/docker-library/mysql/blob/fc3e856313423dc2d6a8d74cfd6b678582090fc7/8.0/Dockerfile
- 请注意,在该 dockerfile 中的 mysql 安装说明之后,有 Entrypoint 和 CMD 说明。
一般来说:
由于您希望 php 和 mysql 在 docker 上工作 - 我的建议是让您了解 docker-compose。Docker 容器可以以多种方式运行,docker-compose 允许您启动多个 docker 容器,在它们之间共享一些文件夹。在这种情况下,您可能希望启动单独的 mysql 容器和单独的 php 容器,在它们之间共享主机数据文件夹并启动您的代码。
另外,在线观看一些视频教程——它们详细解释了 docker 的基本知识以及它是如何工作的。
推荐阅读
- apache-spark - 创建火花上下文时样条线谱系失败
- python - 如何将一系列数值数据转换为特定的分类数据?
- python - 如何将默认值归入 Pandas 数据框列?
- reactjs - 在第一次渲染时从父组件访问子组件的引用
- java - 我可以简化 Hibernate 注释吗?
- bash - 如何使用 shell 脚本查找 CSV 文件中出现最多的字段?
- push-notification - 推送通知后的简单推送错误:java.lang.NoClassDefFoundError
- r - R 的 trunc 和 round 不适用于课程日期?
- android - 是否有任何解决方案可以在 View 中观察 MutubleLiveData 的状态,同时通过 ViewModel 中的方法参数对其进行更改
- android - Gradle 使用 ANDROIDX_TEST_ORCHESTRATOR 生成代码覆盖率报告