在本地搭建了Docker和LAMP环境之后,遇到了连接到maridDB的问题

我本想学习使用PHP创建一个论坛应用程序,
特意搭建了Docker环境来进行开发,并记录下此时的备忘录。

用Docker建立LAMP环境。

首先,您可以参考这篇文章并按照其步骤进行操作,很容易就能够查看到默认包含的「phpinfo()」页面。

按照文章的指示进行配置,使用docker-compose up -d命令启动容器。

只要使用本地主机访问此URL,就可以访问我们这次创建的文件夹内的index.php文件。非常方便。

接下来,我们将输入以下命令以连接至MariaDB。

$ docker exec -it コンテナID mysql -u ユーザ名 -p

运行中的容器可以在 $ docker ps 中查看到容器ID。

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS              PORTS                                            NAMES
7c876e4a6be4   bitnami/apache:2.4    "/opt/bitnami/script…"   39 minutes ago       Up 3 minutes        0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp      apache_docker_sample
5008ca456e72   (フォルダ名)_php-fpm    "php-fpm -F"             39 minutes ago       Up 3 minutes        9000/tcp                                         php-fpm_docker_sample
22695d443a79   mailhog/mailhog       "MailHog"                About an hour ago    Up 3 minutes        0.0.0.0:1025->1025/tcp, 0.0.0.0:8025->8025/tcp   (フォルダ名)_mailhog_1

没有MariaDB。

使用”$ docker ps -a”命令进行搜索(此命令将显示未启动的容器)。

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                        PORTS                                            NAMES
e852d2ec700b   mariadb:10.3          "docker-entrypoint.s…"   About a minute ago   Exited (1) 30 secounds ago    3306/tcp, 0.0.0.0:3307->3307/tcp                 mariadb_docker_sample

好像发生了。看起来好像在启动的瞬间就停止了。(详细的机制我自己还没有完全理解……)

研究了解这个问题的解决方案后,发现需要进行MariaDB的持久化设置。

根据Docker的文档,有一个叫做“卷”的概念,它被描述为:“用于在Docker容器中生成和使用数据,并保持数据的持久性”。

以下是我修正过的有问题的地方。

修改docker-compose.yml文件

(修正前)
 #MARIADB
  mariadb:
    image: mariadb:10.3
    container_name: mariadb_docker_sample
    working_dir: /application
    hostname: 127.0.0.1
    ports:
      - '3307:3307'
    volumes:
      - .:/application
      - ./mysql-data:/var/lib/mysql
      - ./mariadb/my-overrider.cnf:/etc/mysql/my.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
    env_file:
      - .env
  mailhog:
    image: mailhog/mailhog
    ports:
      - '8025:8025'
      - '1025:1025'
(修正後)
 #MARIADB
  mariadb:
    image: mariadb:10.3
    container_name: mariadb_docker_sample
    working_dir: /application
    hostname: 127.0.0.1
    ports:
      - '3307:3307'
    volumes:
      - .:/application
      #- ./mysql-data:/var/lib/mysql
      - ./mariadb:/var/lib/mariadb
      - ./mariadb/my-overrider.cnf:/etc/mysql/my.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
    env_file:
      - .env
  mailhog:
    image: mailhog/mailhog
    ports:
      - '8025:8025'
      - '1025:1025'

在此之后,应用Docker-compose的修改

docker-compose up -d

当我使用 $ docker ps 命令进行确认时,我发现mariaDB也已经启动了。

使用以下命令重新输入:$docker exec -it 容器ID mysql -u 用户名 -p。您可以通过$docker -s确认容器ID。

输入.env文件中设置的值作为用户名和密码(如果按照第一个链接中的文章设置,则用户名应为docker,密码应为pass1234)。

我此刻已经成功连接了!

最后

未来我将不再使用MAMP,而是可以轻松地搭建PHP环境,但由于我对Dockerfile和docker-compose中的代码理解不够,所以将来我希望能够继续学习。

以下是我参考的网站

( Docker加上LAMP环境的构建)

在Docker中验证操作。

(mariaDB连接测试)

(面向初学者的Docker Compose命令速查)

广告
将在 10 秒后关闭
bannerAds