MySQL 8.4.3 的最小 docker-compose

问题描述 投票:0回答:1

官方 WordPress Docker 镜像页面的示例(实际时间为 2024 年底):

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

我的预设接近这个:

services:

  WordPress:

    container_name: Example-WordPressHomePage-WordPress
    image: wordpress:6.7.1-php8.1-apache
    ports:
      - 80:80

    volumes:
      - ./wordpress:/var/www/html

    restart: always
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress

  Database:

    container_name: Example-WordPressHomePage-Database
    image: mysql:8.4.3
    volumes:
      - ./database:/var/lib/mysql

    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress

    expose:
      - 3306
      - 33060

目前WordPress无法连接数据库:

enter image description here

但是,通过 IntelliJ IDEA 工具直接连接也不起作用:

enter image description here

我想,上面的预设对于 mysql:8.4.3 图像来说是不够的。 还需要做什么?

mysql wordpress docker
1个回答
0
投票

在 Compose 中,您使用服务名称作为主机名。您已将

db
重命名为
Database
,因此您还必须使用
WORDPRESS_DB_HOST=Database

我建议您使用小写名称,因为 Linux 区分大小写,如果您一直使用小写,您会得到更少的错误。

无法从 IntelliJ 连接的原因是您没有将主机端口映射到 MySQL 容器。

expose
不这样做。如果您希望能够从 Docker 网络外部访问它,您需要使用
ports
指令映射端口 3306,就像在 Wordpress 容器上所做的那样。

这样的东西应该效果更好

  WordPress:

    container_name: Example-WordPressHomePage-WordPress
    image: wordpress:6.7.1-php8.1-apache
    ports:
      - 80:80

    volumes:
      - ./wordpress:/var/www/html

    restart: always
    environment:
      - WORDPRESS_DB_HOST=Database
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress

  Database:

    container_name: Example-WordPressHomePage-Database
    image: mysql:8.4.3
    volumes:
      - ./database:/var/lib/mysql

    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress

    ports:
      - 3306:3306
© www.soinside.com 2019 - 2024. All rights reserved.