相关疑难解决方法(0)

在Dockerfile中设置MySQL并导入转储

我正在尝试为我的LAMP项目设置Dockerfile,但是在启动MySQL时我遇到了一些问题.我的Dockerfile上有以下行:

VOLUME ["/etc/mysql", "/var/lib/mysql"]
ADD dump.sql /tmp/dump.sql
RUN /usr/bin/mysqld_safe & sleep 5s
RUN mysql -u root -e "CREATE DATABASE mydb"
RUN mysql -u root mydb < /tmp/dump.sql
Run Code Online (Sandbox Code Playgroud)

但我一直收到这个错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Run Code Online (Sandbox Code Playgroud)

有关如何在Dockerfile构建期间设置数据库创建和转储导入的任何想法?

mysql docker

116
推荐指数
5
解决办法
11万
查看次数

Docker 数据库容器正在运行。另一个带有 pid &lt;id&gt; 的进程正在使用 unix 套接字文件

我正在尝试根据此消息/sf/answers/2040537691/中提供的指令运行带有初始化数据库的 docker mysql 容器。第一次运行后工作正常,但在第二次运行时,尝试从脚本执行 /usr/sbin/mysqld 后,出现此错误:

db_1 | 2016-03-19T14:50:14.819377Z 0 [错误] pid 10 的另一个进程正在使用 unix 套接字文件。

db_1 | 2016-03-19T14:50:14.819498Z 0 [错误] 无法设置 unix 套接字锁定文件。

...

mdir_db_1 退出,代码为 1

这可能是什么原因?

mysql sockets docker

20
推荐指数
5
解决办法
2万
查看次数

使用docker-compose创建MySQL架构/数据库

我正在尝试创建一个mysql数据库/模式,如果它尚不存在.

这是我尝试过的:

泊坞窗,compose.yml

mysql:
  image: mysql:5.6.26
  environment:
   - MYSQL_ROOT_PASSWORD=root
  command: "mysql -uroot -proot < createDB.sql"
  ports:
    - "3306:3306"
Run Code Online (Sandbox Code Playgroud)

createDB.sql

CREATE DATABASE IF NOT EXISTS bignibou;
Run Code Online (Sandbox Code Playgroud)

这是行不通的.如果架构不存在,那么使用docker/docker-compose创建架构的最佳方法是什么?

mysql docker docker-compose

18
推荐指数
1
解决办法
4万
查看次数

在Kubernetes上使用Wordpress CLI映像

我们有一个基于官方wordpress图像的自定义docker图像,其中包含我们正在开发的自定义主题。我们使用Gitlab CI对该项目提供了CI / CD,并在裸机Kubernetes Cluster v1.6上部署了分支,以供审核。效果很好,但是我们正在尝试通过在部署新实例时自动化所需的手动操作来增强流程:

  • 安装Wordpress
    • 设置管理员凭证
    • 设置网站名称和网址
  • 激活主题
  • 激活插件
  • 汇入资料
  • 等等

wp-cli具有所需的所有命令。但是如何与容器和K8S一起使用呢?我们知道有两种选择:

  • 在基于WordPress的映像中安装该工具。
  • 使用仅包含wp-cli并与主容器通信的第二个容器。

有预装了wp-cli的WordPress图像(例如tutum-docker-wordpress),但是我们认为这不是正确的方法。在某些时候,我们希望每天使用带有cli映像的CronJob资源来导出数据,并且我们试图使该过程尽可能通用,并且我们希望保留官方映像,因此首选第二种方法。根据我们的研究,为了实施第二种选择,我们需要实现两件事:

  • 从CLI容器访问WordPress安装文件。
  • 成功执行后请勿重试。

我们研究了几种选择,但没有完全成功:

  • 同一容器中的第二个容器-看起来可以使用EmptyDir在两个容器之间共享文件,但是即使容器成功,它也会重新启动。
  • InitContainer-这听起来很诱人,因为数据库迁移是通过这种方式完成的。但是,除非使用自定义图像,否则似乎无法获取文件。
  • 作业 -专为一次性任务而设计,但是似乎无法访问容器中容器的文件。

当您在Kubernetes上部署Wordpress的审阅部署时,这似乎是一个非常常见的功能,并且应该已经有人做到了。但是我们找不到有关此用例的任何特定信息。

请根据您的建议提供最佳实现方式的最佳方法是什么?

wordpress kubernetes wp-cli

5
推荐指数
1
解决办法
375
查看次数

为什么我的 docker-entrypoint-initdb.d 脚本(在 docker-compose.yml 中指定)没有被执行来初始化一个新的 MySQL 实例?

/docker-entrypoint-initdb.d这个答案中发现了目录,还阅读了“如何使用这个图像”MySQL 文档的“初始化一个新实例”部分。但是当我docker-compose up在包含以下docker-compose.yml文件的目录中运行时,我的数据库没有初始化。


services:

# Use root/root as MySQL user/password credentials
  db:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_DATABASE: db
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/init:/docker-entrypoint-initdb.d/:ro

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
Run Code Online (Sandbox Code Playgroud)

我确认该./mysql/init目录包含一个名为init.sql. 我确认在清空./mysql/data目录并运行后docker-compose updb创建了一个数据库。但是没有填充数据库,除非我在 Adminer 中手动执行脚本。(我单击“导入”,然后选择文件并按“执行”按钮。)

运行后docker-compose up,我在控制台输出中查找消息,这些消息表明尝试运行init.sql但找不到任何内容。

更新: MySQL 版本为 8.0.19。

mysql init docker docker-compose

5
推荐指数
1
解决办法
6215
查看次数

标签 统计

docker ×4

mysql ×4

docker-compose ×2

init ×1

kubernetes ×1

sockets ×1

wordpress ×1

wp-cli ×1