php - 如何将 PhpMyAdmin 与 Mysql 连接,这两者都托管在 Gcloud 的 Kubernetes 集群中

标签 php phpmyadmin kubernetes docker-compose google-kubernetes-engine

我已经在 Kubernetes 集群中部署了 MySql 和 PhpMyAdmin。我想用用户名和密码登录PMA并连接到Mysql。我有点卡住了。我有 PMA 的外部 IP,它应该连接到我的数据库。
这是我的部署脚本:

对于 mysql:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    name: mysqldb
  name: mysqldb
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        name: mysqldb
    spec:
      containers:
      - env:
        - name: DB_NAME
          value: metrics
        - name: DB_USER
          value: metrics
        - name: DB_PASS
          value: ****
        image: mysql:5.7
        name: mysqldb
        ports:
        - containerPort: 3306
        resources: {}
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: data-volume
          subPath: data
      restartPolicy: Always
      volumes:
      - name: data-volume
        persistentVolumeClaim:
          claimName: data-volume
status: {}

对于 PMA:
apiVersion: v1
kind: Pod
metadata:
  name: myadmin
  labels:
    name: myadmin
spec:
  containers:
    - name: phpmyadmin
      image: phpmyadmin/phpmyadmin
      env:
        - name: PMA_HOST
          value: mysqldb
        - name: DB_NAME
          value: metrics
        - name: DB_USER
          value: *****
        - name: DB_PASS
          value: *****
      ports:
        - containerPort: 80
          name: myadmin

难道我做错了什么。

甚至可以在 Kubernetes 中部署 Php、Mysql、PMA、React 和 Nginx 吗?
有点努力弄清楚所有事物是如何连接的,并且找不到与此主题相关的任何有意义的资源。我的应用程序在本地机器上运行良好,使用 docker-compose 并尝试将此文件转换为 Kompose 资源。

这是我的 docker-compose 文件:
version: '3'
services:
    web:
        image: nginx:alpine
        volumes:
            - "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
            - "./etc/ssl:/etc/ssl"
            - "./web:/var/www/html"
            - "./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template"
        ports:
            - "8000:80"
            - "3000:443"
        environment:
            - NGINX_HOST=${NGINX_HOST}
        command: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
        restart: always
        depends_on:
            - php
            - mysqldb
    app:
      build: ./app
      environment:
        - NODE_ENV=$NODE_ENV
      ports:
          - "5000:5000"
      volumes:
        - ./app:/usr/src/web
        # Use a data volume to store all `node_modules` to prevent the directory
        # being removed when `./app` is mounted into the docker instance
        - /usr/src/web/node_modules
      #uncomment to run a local prod build
      #command: yarn build-start-local-prod
    php:
        image: nanoninja/php-fpm:${PHP_VERSION}
        restart: always
        env_file:
            - ".env"
        environment:
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        volumes:
            - "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
            - "./web:/var/www/html"
    composer:
        image: "composer"
        volumes:
            - "./web/app:/app"
        command: install
    myadmin:
        image: phpmyadmin/phpmyadmin
        container_name: phpmyadmin
        ports:
            - "8080:80"
        environment:
            - PMA_ARBITRARY=1
            - PMA_HOST=${MYSQL_HOST}
        restart: always
        depends_on:
            - mysqldb
    mysqldb:
        image: mysql:5.7
        container_name: ${MYSQL_HOST}
        restart: always
        env_file:
            - ".env"
        environment:
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        ports:
            - "8989:3306"
        volumes:
            - "data-volume:/var/lib/mysql"
volumes:
  data-volume:

如果您能提供帮助,我将不胜感激。谢谢!

最佳答案

这样做的方法是:

  • 使用 PHP My Admin 设置状态集
  • 指向有状态集的服务
  • 指向服务的入口
  • 您的 MySQL 状态集
  • 关于php - 如何将 PhpMyAdmin 与 Mysql 连接,这两者都托管在 Gcloud 的 Kubernetes 集群中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50134116/

    相关文章:

    PHP If Else 带导航菜单

    php - 如何在刷新页面时停止 'Conform form resubmission' 对话框

    mysql - 当我不知道表、行或字段时,如何在数据库中查找值

    ssh - [“Shared connection closed.”], “stdout”:“sudo:使用Ansible剧本时需要密码\r\n

    Kubernetes Pod/容器恢复

    kubernetes:无法加载现有证书 apiserver-etcd-client:

    php - C转PHP密码加密(逆向)

    php - 删除mysql数据库所有表中的一条记录

    php - xampp 数据库备份与 'data' 文件夹

    phpmyadmin:如何选择默认数据库?