【问题标题】:Wordpress intallation on Docker. trying to skip installation page在 Docker 上安装 Wordpress。试图跳过安装页面
【发布时间】:2019-10-25 17:50:33
【问题描述】:

在 docker 上运行 wordpress。尝试通过在撰写文件中定义用户来跳过安装 install.php。我已经添加了 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
        volumes:
        - ./wordpress:/var/www/html
        - ./docker/wordpress/php/php.ini:/usr/local/etc/php/conf.d/php.ini:ro
        ports:
        - "8000:80"
        restart: always
        environment:
        WORDPRESS_VERSION: 5.1
        WORDPRESS_LOCALE: en_US
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_USER: wordpress
        WORDPRESS_DB_PASSWORD: wordpress
        WORDPRESS_TABLE_PREFIX: "wp_"
        WORDPRESS_DEBUG: 1
        WORDPRESS_DB_NAME: wordpress
        # WORDPRESS_WEBSITE_TITLE: "My blog"
        # WORDPRESS_WEBSITE_URL: "http://example.com"
        # WORDPRESS_WEBSITE_URL_WITHOUT_HTTP: "example.com"
        # WORDPRESS_WEBSITE_URL: "http://http://localhost:8000"
        # WORDPRESS_WEBSITE_URL_WITHOUT_HTTP: "localhost"
        # WORDPRESS_WEBSITE_POST_URL_STRUCTURE: "/%year%/%monthnum%/%day%/%postname%/"
        # WORDPRESS_ADMIN_USER: "admin"
        # WORDPRESS_ADMIN_PASSWORD: "admin"
        # WORDPRESS_ADMIN_EMAIL: "admin@admin.com"

        working_dir: /var/www/html   

    wordpress-cli:
        depends_on:
        - db
        - wordpress
        image: wordpress:cli
        entrypoint: wp
        user: xfs
        command: >
        /bin/sh -c ' sleep 10; 
        wp core install --url="http://localhost:8000" --title="Sample Title" --admin_name=admin --admin_password=admin --admin_email=you@domain.com '

        volumes:
        - ./wordpress:/var/www/html
        - ./docker/wordpress/php/php.ini:/usr/local/etc/php/conf.d/php.ini:ro


volumes:
    db_data: {}
    wordpress:

收到此错误:

C:\DockerProjects\test6>docker-compose up
ERROR: yaml.scanner.ScannerError: while scanning a simple key
  in ".\docker-compose.yml", line 54, column 6
could not find expected ':'
  in ".\docker-compose.yml", line 55, column 6

【问题讨论】:

  • 问题出在您的“command:”行中,请尝试在一行中运行命令。
  • 修复了命令但仍然显示安装页面。

标签: wordpress docker installation docker-compose yaml


【解决方案1】:

我在dockerhub找到了这个:

自 2021 年 3 月以来,WordPress 图像使用自定义的 wp-config.php,它直接从上面定义的环境变量中提取值(参见 docker-library/wordpress#572 和 docker-library/ 中的 wp-config-docker.php WordPress#577)。由于直接读取环境变量,cli容器也需要相同的环境变量集才能正确评估wp-config.php。

因此,您需要像在原始 wordpress 中一样设置环境,如下所示(对我有用,也使用 traefik..):

version: "3.9"

services:
  db:
    image: mysql:5.7
    volumes:
      - ./db:/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
    restart: always

    environment: &env
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_CONFIG_EXTRA: |
        define( 'AUTOMATIC_UPDATER_DISABLED', true );
        define( 'FS_METHOD', 'direct' );
    volumes:
      - &html
        ./html:/var/www/html
    labels: &lab
      - "traefik.enable=true"
      - "traefik.port=80"
      - "traefik.frontend.rule=Host:subdomain.domain.com"
    networks:
      - default
      - web

  wordpress-cli:
    image: wordpress:cli
    depends_on:
      - db
      - wordpress
    environment:
      <<: *env
    volumes:
      - *html
    entrypoint: sh
    command: -c 'sleep 10; wp core install --url="https://subdomain.domain.com" --title="greatname" --admin_name=admin --admin_password="mysupersecureadminpw" --admin_email=my@domain.com'

networks:
  web:
    external: true

您也可以省略 entrypointcommand 部分,在检查一切都在运行后运行 docker-compose run wordpress-cli core install ...。如果您删除 entrypoint 部分,您还可以运行任何其他 wp-cli 命令而不是 core install 那样:-)

【讨论】:

    【解决方案2】:

    您可以在撰写文件中安装 wordpress Cli。或者您可以使用 dockerfile 将 wp cli 复制到映像中并使用自定义入口点安装 wordpress。

    【讨论】:

      【解决方案3】:

      问题出在这部分代码

       user: xfs
              command: >
              /bin/sh -c ' sleep 10; 
              wp core install --url="http://localhost:8000" --title="Sample Title" --admin_name=admin --admin_password=admin --admin_email=you@domain.com '
      

      应该是这样的

      user: xfs
              command: >
                  /bin/sh -c ' sleep 10; 
                  wp core install --url="http://localhost:8000" --title="Sample Title" --admin_name=admin --admin_password=admin --admin_email=you@domain.com '
      

      command: &gt; 之后的 2 行之后,您需要提供 1 个 Tab。

      您可以使用在线格式化程序here.检查您的代码

      编辑 1:

      格式化代码如下所示

      version: '3.3'
      services:
          db:
              image: 'mysql:5.7'
              volumes:
                  - './db-data:/var/lib/mysql'
              restart: always
              environment: null
              MYSQL_ROOT_PASSWORD: somewordpress
              MYSQL_DATABASE: wordpress
              MYSQL_USER: wordpress
              MYSQL_PASSWORD: wordpress
          wordpress:
              depends_on:
                  - db
              image: 'wordpress:latest'
              volumes:
                  - './wordpress:/var/www/html'
                  - './docker/wordpress/php/php.ini:/usr/local/etc/php/conf.d/php.ini:ro'
              ports:
                  - '8000:80'
              restart: always
              environment: null
              WORDPRESS_VERSION: 5.1
              WORDPRESS_LOCALE: en_US
              WORDPRESS_DB_HOST: 'db:3306'
              WORDPRESS_DB_USER: wordpress
              WORDPRESS_DB_PASSWORD: wordpress
              WORDPRESS_TABLE_PREFIX: wp_
              WORDPRESS_DEBUG: 1
              WORDPRESS_DB_NAME: wordpress
              working_dir: /var/www/html
          wordpress-cli:
              depends_on:
                  - db
                  - wordpress
              image: 'wordpress:cli'
              entrypoint: wp
              user: xfs
              command: "/bin/sh -c ' sleep 10;  wp core install --url=\"http://localhost:8000\" --title=\"Sample Title\" --admin_name=admin --admin_password=admin --admin_email=you@domain.com '\n"
              volumes:
                  - './wordpress:/var/www/html'
                  - './docker/wordpress/php/php.ini:/usr/local/etc/php/conf.d/php.ini:ro'
      volumes:
          db_data: {}
          wordpress: null
      

      【讨论】:

      • C:\DockerProjects\test6>docker-compose up ERROR: yaml.scanner.ScannerError: mapping values are not allowed in ".\docker-compose.yml", line 42, column 14 + ++++++++++++++++++++++++++++++++++++++++++++++++ 41:用户:xfs 42 : 命令: > 43: /bin/sh -c ' sleep 10; 44: wp core install --url="localhost:8000" --title="示例标题" --admin_name=admin --admin_password=admin --admin_email=you@domain.com '
      • 代码有效。但 install.php 页面仍然存在,我正在尝试跳过。
      • 这很有帮助,但问题是如果数据库还没有准备好,CLI 命令会失败...... sleep 是不可靠的,让它像 60 一样任意大是一个 hack。有没有办法让它等待数据库准备好连接?
      • 您可以尝试添加这里提到的健康检查stackoverflow.com/questions/31746182/… 或添加depends_on 功能
      猜你喜欢
      • 2019-05-22
      • 2022-09-29
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      相关资源
      最近更新 更多