首页 > 解决方案 > API 平台 - 切换到 mySQL

问题描述

我正在尝试 API 平台。我安装了最新版本,并在 Windows 10 上的 Docker 中运行它。默认 db 是 postgres,想使用 MySQL。

我使用 postgres 安装了默认版本,并且能够启动并运行它。

我改变了 docker-compose.yaml

db:
  image: mysql:8
  environment: 
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=api
    - MYSQL_USER=api-platform
    - MYSQL_PASSWORD=!ChangeMe!
  volumes:
    - db-data:/var/lib/mysql
  ports:
    - target: 3306
      published: 3306
      protocol: tcp

和 api/.env

DATABASE_URL=mysql://api-platform:!ChangeMe!@127.0.0.1:3306/api

文件以使用 MySQL 8.0. 一切似乎都在运行,但我在 Docker 日志中看到

php_1 | Waiting for db to be ready...

当我打开浏览器到https://127.0.0.1:8443时,我得到一个 502 Bad Gateway。

这个问题的任何线索?

谢谢

标签: mysqldockerapi-platform.com

解决方案


这是我为使 MySQL 8 在 API 平台中工作所做的工作。

下载最新版 API Platform 2.5.6

码头工人-compose.yml

db:
  image: mysql:8
  command: mysqld --default-authentication-plugin=mysql_native_password
  restart: always
  security_opt:
    - seccomp:unconfirmed
  enviroment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_USER=api-platform
    - MYSQL_PASSWORD=!ChangeMe!
    - MYSQL_DATABASE=api
  volumes:
    -  db-data:/var/lib/mysql
  ports:
    - target: 3306
      published: 3306
      protocol: tcp

\api.env

DATABASE_URL=mysql://api-platform:!ChangeMe!@db:3306/api?server_version=8

\api\Dockerfile

RUN set -eux; \
    apk add --no-cache --virtual .\build-deps \
    $PHPIZE_DEPS \
    icu-dev \
    libzip-dev \
    pdo_mysql \
    zip \
; \
docker-php-ext-configure zip; \
docker-php-ext-install -j$(nproc) \
    intl \
    pdo_mysql \
    zip \
; \

\api\docker\php\docker-entrypoint.sh

#if ls -A src/Migrations/*.php > /dev/null 2>&1; then
#    bin/console doctrine:migrations:migrate --no-interaction
#fi

迁移脚本处理 MySQL 会很好。至少我现在已经启动并运行了。


推荐阅读