【问题标题】:Docker: I can't map ports other than 80 to my WordPress containerDocker:我无法将 80 以外的端口映射到我的 WordPress 容器
【发布时间】:2018-02-16 11:15:33
【问题描述】:

我想在我的计算机上映射一些随机端口,例如localhost:7006 到我的 WordPress docker 容器的 port 80。当我将 WordPress 的端口从 80:80 更改为 7006:80 时,它不仅停止在 localhost(port 80) 上工作,而且在 localhost:7006 上也没有响应。

docker-compose.yml 文件如下所示:

        version: '3'
    services:
      wordpress:
        depends_on:
          - db
        image: wordpress:4.7.1
        restart: always
        volumes:
          - ./wp-content:/var/www/html/wp-content 
        environment:
          WORDPRESS_DB_HOST: db:3306
          WORDPRESS_DB_PASSWORD: p4ssw0rd!
        ports:
          - 80:80 # Expose http and https
          - 8443:443
        networks:
          - wp_nwk
      db:
        image: mysql:5.7
        restart: always
        volumes:
           - db_data:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: p4ssw0rd!
        networks:
          - wp_nwk
      phpmyadmin:
        depends_on:
          - db
        image: phpmyadmin/phpmyadmin
        restart: always
        ports:
          - 7005:80
        environment:
          PMA_HOST: db
          MYSQL_ROOT_PASSWORD: p4ssw0rd!
        networks:
          - wp_nwk
    networks:
      wp_nwk:
    volumes:
      db_data:

【问题讨论】:

  • 您确定没有其他东西在端口 7006 上运行吗?您可以使用命令sudo netstat -tulpn 进行检查
  • 是的,在我运行 docker-compose up 之前,端口上没有运行任何东西。

标签: wordpress docker docker-compose containers port


【解决方案1】:

经过一番研究,我发现 WordPress 容器设置了它的端口一次,因为它需要将 URL (localhost:7006) 保存在数据库中,因为我正在持久化数据库数据。

我使用默认端口80:80 配置运行docker-compose up 一次,导致localhost:80localhost 保存在数据库中。因此,当我再次更改端口并运行 docker-compose up 时,我实际上将存储在链接 mysql db 容器中的 URL 与我的 WordPress 容器混淆了。

我跑了docker-compose down --volumes(这会导致持久化数据破坏) 然后在 docker-compse.yml 中更改了我的 WordPress 容器的端口。再次运行以下命令在端口 7006 (localhost:7006) 上创建了我的 WordPress 容器。 docker-compose up

wordpress:
depends_on:
  - db
image: wordpress:4.7.1
restart: always
volumes:
  - ./wp-content:/var/www/html/wp-content 
environment:
  WORDPRESS_DB_HOST: db:3306
  WORDPRESS_DB_PASSWORD: p4ssw0rd!
ports:
  - 7006:80 # Expose http and https
  - 8443:443
networks:
  - wp_nwk

重要提示:我只是在玩 docker,所以我不想保存我的 卷数据。任何想要保留其数据的人都不得使用 docker-compose down --volumes

它现在正在所需的端口上运行

【讨论】:

  • 知道是否可以更改数据库中的端口号?我需要持久化卷数据。
  • 您必须使用 phpmyadmin 手动编辑数据库。
【解决方案2】:

如果您想更改端口,则需要执行以下步骤。我成功更改了我的 WordPress 端口

  1. 默认运行 WordPress docker-compose.yml
version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}
  1. 登录 wordpress 并根据需要更改网站 url 和主页
  2. 在 wordpress 容器中使用 follow 命令
docker exec -it *wordpres_container_id* bash
  1. 将后续行添加到wp_config.php
define( 'WP_HOME', 'http://example.com' );
define( 'WP_SITEURL', 'http://example.com' );
  1. docker-compose.yml端口更改为80
  2. 使用跟随命令重启容器
docker-compose down
docker-compose up -d

【讨论】:

    【解决方案3】:

    您需要从 wordpress admin 中更改 [WordPress 地址 (URL) 和站点地址 (URL)],然后在 docker-compose 中更改端口,而不会破坏卷中的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-19
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      相关资源
      最近更新 更多