亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Docker環(huán)境變量問題
黃舟
黃舟 2017-04-24 09:10:12
0
2
974

Docker環(huán)境變量問題,比如,在Docker Hub上下載了一個nginx鏡像,現(xiàn)在要把我自己的配置文件用上去,看到說可以有三種方式:
1、用環(huán)境變量傳遞配置。
2、用數(shù)據(jù)卷,把配置文件放到數(shù)據(jù)卷中。
3、修改鏡像,保存為新的鏡像。

現(xiàn)在,我想采用第1種方法,文檔中關(guān)于環(huán)境變量的內(nèi)容如下:

可是怎么配置,仍然有點不清楚。

黃舟
黃舟

人生最曼妙的風(fēng)景,竟是內(nèi)心的淡定與從容!

reply all(2)
Ty80

Who told you that environment variables can be used to transfer configuration files...
You can use environment variables. It means that some software can recognize both the configuration provided in the environment variables and the configuration in the form of files. However, unfortunately, Nginx Not included in this list.

Take wget as an example. When setting the HTTP proxy, you can choose any of the following methods:

  • Add a line in the configuration filehttp_proxy = http://example.com/xxx

  • Change system environment variables$http_proxy設(shè)定為http://example.com/xxx

The two methods have the same effect.

Of course, you can write a Shell script in the Docker container to modify the contents of the configuration file based on environment variables, but this is another topic. There are many tools on Github that implement similar functions, such as Tiller.

Additional information: How Should I Get Application Configuration into my Docker Containers?

Peter_Zhu

Oh, you need to bring parameters when starting the container, such as:
./docker run --detach --name wordpress --net wordnet --publish 80:80 --env WORDPRESS_DB_HOST=mysql --env WORDPRESS_DB_PASSWORD=xxxxxxxx wordpress: 4.4

Of course, the parameters brought in must be processed in the container startup command:

cat /entrypoint.sh

#!/bin/bash
set -e

if [[ "" == apache2* ]] || [ "" == php-fpm ]; then
    if [ -n "$MYSQL_PORT_3306_TCP" ]; then
        if [ -z "$WORDPRESS_DB_HOST" ]; then
            WORDPRESS_DB_HOST='mysql'
        else
            echo >&2 'warning: both WORDPRESS_DB_HOST and MYSQL_PORT_3306_TCP found'
            echo >&2 "  Connecting to WORDPRESS_DB_HOST ($WORDPRESS_DB_HOST)"
            echo >&2 '  instead of the linked mysql container'
        fi
    fi

    if [ -z "$WORDPRESS_DB_HOST" ]; then
        echo >&2 'error: missing WORDPRESS_DB_HOST and MYSQL_PORT_3306_TCP environment variables'
        echo >&2 '  Did you forget to --link some_mysql_container:mysql or set an external db'
        echo >&2 '  with -e WORDPRESS_DB_HOST=hostname:port?'
        exit 1
    fi

    # if we're linked to MySQL and thus have credentials already, let's use them
    : ${WORDPRESS_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}
    if [ "$WORDPRESS_DB_USER" = 'root' ]; then
        : ${WORDPRESS_DB_PASSWORD:=$MYSQL_ENV_MYSQL_ROOT_PASSWORD}
    fi
    : ${WORDPRESS_DB_PASSWORD:=$MYSQL_ENV_MYSQL_PASSWORD}
    : ${WORDPRESS_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-wordpress}}

    if [ -z "$WORDPRESS_DB_PASSWORD" ]; then
        echo >&2 'error: missing required WORDPRESS_DB_PASSWORD environment variable'
        echo >&2 '  Did you forget to -e WORDPRESS_DB_PASSWORD=... ?'
        echo >&2
        echo >&2 '  (Also of interest might be WORDPRESS_DB_USER and WORDPRESS_DB_NAME.)'
        exit 1
    fi

    if ! [ -e index.php -a -e wp-includes/version.php ]; then
        echo >&2 "WordPress not found in $(pwd) - copying now..."
        if [ "$(ls -A)" ]; then
            echo >&2 "WARNING: $(pwd) is not empty - press Ctrl+C now if this is an error!"
            ( set -x; ls -A; sleep 10 )
        fi
        tar cf - --one-file-system -C /usr/src/wordpress . | tar xf -
        echo >&2 "Complete! WordPress has been successfully copied to $(pwd)"
        if [ ! -e .htaccess ]; then
            # NOTE: The "Indexes" option is disabled in the php:apache base image
            cat > .htaccess <<-'EOF'
                # BEGIN WordPress
                <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteBase /
                RewriteRule ^index\.php$ - [L]
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule . /index.php [L]
                </IfModule>
                # END WordPress
            EOF
            chown www-data:www-data .htaccess
        fi
    fi

    # TODO handle WordPress upgrades magically in the same way, but only if wp-includes/version.php's $wp_version is less than /usr/src/wordpress/wp-includes/version.php's $wp_version

    # version 4.4.1 decided to switch to windows line endings, that breaks our seds and awks
    # https://github.com/docker-library/wordpress/issues/116
    # https://github.com/WordPress/WordPress/commit/1acedc542fba2482bab88ec70d4bea4b997a92e4
    sed -ri 's/\r\n|\r/\n/g' wp-config*

    if [ ! -e wp-config.php ]; then
        awk '/^\/\*.*stop editing.*\*\/$/ && c == 0 { c = 1; system("cat") } { print }' wp-config-sample.php > wp-config.php <<'EOPHP'
// If we're behind a proxy server and using HTTPS, we need to alert Wordpress of that fact
// see also http://codex.wordpress.org/Administration_Over_SSL#Using_a_Reverse_Proxy
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

EOPHP
        chown www-data:www-data wp-config.php
    fi

    # see http://stackoverflow.com/a/2705678/433558
    sed_escape_lhs() {
        echo "$@" | sed 's/[]\/$*.^|[]/\&/g'
    }
    sed_escape_rhs() {
        echo "$@" | sed 's/[\/&]/\&/g'
    }
    php_escape() {
        php -r 'var_export(('') $argv[1]);' ""
    }
    set_config() {
        key=""
        value=""
        var_type="${3:-string}"
        start="(['\"])$(sed_escape_lhs "$key")\s*,"
        end="\);"
        if [ "${key:0:1}" = '$' ]; then
            start="^(\s*)$(sed_escape_lhs "$key")\s*="
            end=";"
        fi
        sed -ri "s/($start\s*).*($end)$/$(sed_escape_rhs "$(php_escape "$value" "$var_type")")/" wp-config.php
    }

    set_config 'DB_HOST' "$WORDPRESS_DB_HOST"
    set_config 'DB_USER' "$WORDPRESS_DB_USER"
    set_config 'DB_PASSWORD' "$WORDPRESS_DB_PASSWORD"
    set_config 'DB_NAME' "$WORDPRESS_DB_NAME"

    # allow any of these "Authentication Unique Keys and Salts." to be specified via
    # environment variables with a "WORDPRESS_" prefix (ie, "WORDPRESS_AUTH_KEY")
    UNIQUES=(
        AUTH_KEY
        SECURE_AUTH_KEY
        LOGGED_IN_KEY
        NONCE_KEY
        AUTH_SALT
        SECURE_AUTH_SALT
        LOGGED_IN_SALT
        NONCE_SALT
    )
    for unique in "${UNIQUES[@]}"; do
        eval unique_value=$WORDPRESS_$unique
        if [ "$unique_value" ]; then
            set_config "$unique" "$unique_value"
        else
            # if not specified, let's generate a random value
            current_set="$(sed -rn "s/define\((([\'\"])$unique\s*,\s*)(['\"])(.*)\);//p" wp-config.php)"
            if [ "$current_set" = 'put your unique phrase here' ]; then
                set_config "$unique" "$(head -c1M /dev/urandom | sha1sum | cut -d' ' -f1)"
            fi
        fi
    done

    if [ "$WORDPRESS_TABLE_PREFIX" ]; then
        set_config '$table_prefix' "$WORDPRESS_TABLE_PREFIX"
    fi

    if [ "$WORDPRESS_DEBUG" ]; then
        set_config 'WP_DEBUG' 1 boolean
    fi

    TERM=dumb php -- "$WORDPRESS_DB_HOST" "$WORDPRESS_DB_USER" "$WORDPRESS_DB_PASSWORD" "$WORDPRESS_DB_NAME" <<'EOPHP'
<?php
// database might not exist, so let's try creating it (just to be safe)

$stderr = fopen('php://stderr', 'w');

list($host, $port) = explode(':', $argv[1], 2);

$maxTries = 10;
do {
    $mysql = new mysqli($host, $argv[2], $argv[3], '', (int)$port);
    if ($mysql->connect_error) {
        fwrite($stderr, "\n" . 'MySQL Connection Error: (' . $mysql->connect_errno . ') ' . $mysql->connect_error . "\n");
        --$maxTries;
        if ($maxTries <= 0) {
            exit(1);
        }
        sleep(3);
    }
} while ($mysql->connect_error);

if (!$mysql->query('CREATE DATABASE IF NOT EXISTS `' . $mysql->real_escape_string($argv[4]) . '`')) {
    fwrite($stderr, "\n" . 'MySQL "CREATE DATABASE" Error: ' . $mysql->error . "\n");
    $mysql->close();
    exit(1);
}

$mysql->close();
EOPHP
fi

exec "$@"
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template