关键词

详解用Docker搭建外部可以访问的mysql

非常感谢您对Docker的关注,下面我将为您详细介绍使用Docker搭建外部可以访问的Mysql数据库的完整攻略。

前提条件

在开始之前,请确保您的系统已经安装DockerDocker Compose

第一步:编写docker-compose文件

我们需要编写一个docker-compose文件来描述我们的容器集合、它们的映像和它们的关系。在这个例子中,我们将使用docker-compose.yml文件来描述MySQL数据库和一个PHP应用程序的容器。docker-compose.yml文件应该如下所示:

version: '3'
services:
  db:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
    ports:
      - "3306:3306"
  web:
    build: .
    ports:
      - "80:80"
    depends_on:
      - db
    environment:
      DB_HOST: db

这个docker-compose文件包含了两个服务:dbwebdb服务使用了官方的MySQL镜像,它会在Docker容器中启动MySQL,并将3306端口映射到本地宿主机上的3306端口。同时,web服务则使用了Dockerfile构建镜像,将80端口映射到本地宿主机上的80端口,并且依赖MySQL数据库服务db。其中,web服务的DB_HOST环境变量指向了db服务,以便应用程序连接到MySQL数据库。

第二步:编写Dockerfile

接下来,我们需要在当前目录下创建一个Dockerfile,并将以下代码复制到该文件中:

FROM php:apache
COPY . /var/www/html/
RUN docker-php-ext-install mysqli

这个Dockerfile会构建一个基于Apache和PHP的镜像,并将当前目录下的文件复制到容器中。同时,它会安装MySQLi PHP扩展,以便我们的应用程序能够连接到MySQL数据库。

第三步:启动服务

运行以下命令以启动服务:

docker-compose up -d

这个命令将启动我们在docker-compose文件中定义的所有服务,并且使用-d标志使它们在后台运行。如果一切顺利,你会在浏览器中看到PHP应用程序的欢迎界面。

第四步:访问数据库

现在,我们需要在PHP应用程序中连接到MySQL数据库。打开PHP源代码中的config.php文件,并将以下代码复制到该文件中:

<?php
define('DB_HOST', getenv('DB_HOST'));
define('DB_NAME', 'your_database_name');
define('DB_USER', 'your_database_user');
define('DB_PASSWORD', 'your_database_password');
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
        . $mysqli->connect_error);
}
?>

这个PHP脚本将使用MySQLi PHP扩展连接到MySQL数据库。其中,DB_HOST环境变量将从docker-compose.yml文件中传递给应用程序,以便它可以连接到MySQL服务。

第五步:测试

现在,我们可以测试PHP应用程序是否可以连接到MySQL数据库。运行以下命令以创建一个新的MySQL数据库:

docker exec -it <mysql_container_id> mysql -uroot -p

在进入MySQL shell之后,运行以下命令以创建一个新的MySQL数据表:

CREATE DATABASE your_database_name;
USE your_database_name;
CREATE TABLE persons (id int, name varchar(255));
INSERT INTO persons (id, name) VALUES (1, 'John Doe');

现在,我们可以在PHP应用程序中查询MySQL数据库。打开浏览器并访问以下网址:http://localhost。如果一切正常,你将看到PHP应用程序中的“Hello World!”消息。

如果您跟着以上步骤,你已经成功地使用Docker搭建了一个外部可以访问的MySQL数据库,并与PHP应用程序连接。

本文链接:http://task.lmcjl.com/news/18807.html

展开阅读全文