Docker:我不能将80以外的端口映射到我的WordPress容器

时间:2018-02-16 11:15:34

标签: wordpress docker docker-compose containers port

我想在我的计算机上映射一些随机端口,例如localhost:7006到我的WordPress泊坞窗容器port 80。当我将WordPress的端口从80:80更改为7006:80时,它不仅会停止工作localhost(port 80) {1}}但也没有回复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:

3 个答案:

答案 0 :(得分:8)

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

我使用默认端口docker-compose up配置运行80:80一次,导致localhost:80localhost保存在数据库中。所以,当我再次更改端口并运行docker-compose up时,我实际上搞砸了存储在链接的mysql数据库容器中的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-compose down --volumes

现在正在所需的端口上运行 enter image description here

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

  1. 使用默认的 docker-compose.yml
  2. 运行wordpress
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并根据需要更改网站的网址和首页
  2. 在wordpress容器中使用关注命令
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