# usage: file_env VAR [DEFAULT] # ie: file_env 'XYZ_DB_PASSWORD' 'example' # (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of # "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) file_env() { local var="$1" local fileVar="${var}_FILE" local def="${2:-}" if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then echo >&2 "error: both $var and $fileVar are set (but are exclusive)" exit 1 local val="$def" if [ "${!var:-}" ]; then val="${!var}" elif [ "${!fileVar:-}" ]; then val="$(< "${!fileVar}")" export "$var"="$val" unset "$fileVar" if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then if [ "$(id -u)" = '0' ]; then case "$1" in apache2*) user="${APACHE_RUN_USER:-www-data}" group="${APACHE_RUN_GROUP:-www-data}" # strip off any '#' symbol ('#1000' is valid syntax for Apache) pound='#' user="${user#$pound}" group="${group#$pound}" *) # php-fpm user='www-data' group='www-data' user="$(id -u)" group="$(id -g)" if [ ! -e index.php ] && [ ! -e wp-includes/version.php ]; then # if the directory exists and WordPress doesn't appear to be installed AND the permissions of it are root:root, let's chown it (likely a Docker-created directory) if [ "$(id -u)" = '0' ] && [ "$(stat -c '%u:%g' .)" = '0:0' ]; then chown "$user:$group" . echo >&2 "WordPress not found in $PWD - copying now..." if [ -n "$(ls -A)" ]; then echo >&2 "WARNING: $PWD is not empty! (copying anyhow)" sourceTarArgs=( --create --file - --directory /usr/src/wordpress --owner "$user" --group "$group" targetTarArgs=( --extract --file - if [ "$user" != '0' ]; then # avoid "tar: .: Cannot utime: Operation not permitted" and "tar: .: Cannot change mode to rwxr-xr-x: Operation not permitted" targetTarArgs+=( --no-overwrite-dir ) tar "${sourceTarArgs[@]}" . | tar "${targetTarArgs[@]}" 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 RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress chown "$user:$group" .htaccess # allow any of these "Authentication Unique Keys and Salts." to be specified via # environment variables with a "WORDPRESS_" prefix (ie, "WORDPRESS_AUTH_KEY") uniqueEnvs=( AUTH_KEY SECURE_AUTH_KEY LOGGED_IN_KEY NONCE_KEY AUTH_SALT SECURE_AUTH_SALT LOGGED_IN_SALT NONCE_SALT envs=( WORDPRESS_DB_HOST WORDPRESS_DB_USER WORDPRESS_DB_PASSWORD WORDPRESS_DB_NAME WORDPRESS_DB_CHARSET WORDPRESS_DB_COLLATE "${uniqueEnvs[@]/#/WORDPRESS_}" WORDPRESS_TABLE_PREFIX WORDPRESS_DEBUG WORDPRESS_CONFIG_EXTRA haveConfig= for e in "${envs[@]}"; do file_env "$e" if [ -z "$haveConfig" ] && [ -n "${!e}" ]; then haveConfig=1 # linking backwards-compatibility if [ -n "${!MYSQL_ENV_MYSQL_*}" ]; then haveConfig=1 # host defaults to "mysql" below if unspecified : "${WORDPRESS_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}" if [ "$WORDPRESS_DB_USER" = 'root' ]; then : "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD:-}}" : "${WORDPRESS_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD:-}}" : "${WORDPRESS_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-}}" # only touch "wp-config.php" if we have environment-supplied configuration values if [ "$haveConfig" ]; then : "${WORDPRESS_DB_HOST:=mysql}" : "${WORDPRESS_DB_USER:=root}" : "${WORDPRESS_DB_PASSWORD:=}" : "${WORDPRESS_DB_NAME:=wordpress}" : "${WORDPRESS_DB_CHARSET:=utf8}" : "${WORDPRESS_DB_COLLATE:=}" # 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 -e 's/\r$//' wp-config* if [ ! -e wp-config.php ]; then awk ' /^\/\*.*stop editing.*\*\/$/ && c == 0 { c = 1 system("cat") if (ENVIRON["WORDPRESS_CONFIG_EXTRA"]) { print "// WORDPRESS_CONFIG_EXTRA" print ENVIRON["WORDPRESS_CONFIG_EXTRA"] "\n" { 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 "$user:$group" wp-config.php elif [ -e wp-config.php ] && [ -n "$WORDPRESS_CONFIG_EXTRA" ] && [[ "$(< wp-config.php)" != *"$WORDPRESS_CONFIG_EXTRA"* ]]; then # (if the config file already contains the requested PHP code, don't print a warning) echo >&2 echo >&2 'WARNING: environment variable "WORDPRESS_CONFIG_EXTRA" is set, but "wp-config.php" already exists' echo >&2 ' The contents of this variable will _not_ be inserted into the existing "wp-config.php" file.' echo >&2 ' (see https://github.com/docker-library/wordpress/issues/333 for more details)' echo >&2 # see http://stackoverflow.com/a/2705678/433558 sed_escape_lhs() { echo "$@" | sed -e 's/[]\/$*.^|[]/\\&/g' sed_escape_rhs() { echo "$@" | sed -e 's/[\/&]/\\&/g' php_escape() { local escaped="$(php -r 'var_export(('"$2"') $argv[1]);' -- "$1")" if [ "$2" = 'string' ] && [ "${escaped:0:1}" = "'" ]; then escaped="${escaped//$'\n'/"' + \"\\n\" + '"}" echo "$escaped" set_config() { key="$1" value="$2" var_type="${3:-string}" start="(['\"])$(sed_escape_lhs "$key")\2\s*," end="\);" if [ "${key:0:1}" = '$' ]; then start="^(\s*)$(sed_escape_lhs "$key")\s*=" end=";" sed -ri -e "s/($start\s*).*($end)$/\1$(sed_escape_rhs "$(php_escape "$value" "$var_type")")\3/" 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" set_config 'DB_CHARSET' "$WORDPRESS_DB_CHARSET" set_config 'DB_COLLATE' "$WORDPRESS_DB_COLLATE" for unique in "${uniqueEnvs[@]}"; do uniqVar="WORDPRESS_$unique" if [ -n "${!uniqVar}" ]; then set_config "$unique" "${!uniqVar}" # if not specified, let's generate a random value currentVal="$(sed -rn -e "s/define\(\s*(([\'\"])$unique\2\s*,\s*)(['\"])(.*)\3\s*\);/\4/p" wp-config.php)" if [ "$currentVal" = 'put your unique phrase here' ]; then set_config "$unique" "$(head -c1m /dev/urandom | sha1sum | cut -d' ' -f1)" if [ "$WORDPRESS_TABLE_PREFIX" ]; then set_config '$table_prefix' "$WORDPRESS_TABLE_PREFIX" if [ "$WORDPRESS_DEBUG" ]; then set_config 'WP_DEBUG' 1 boolean if ! TERM=dumb php -- <<'EOPHP' // database might not exist, so let's try creating it (just to be safe) $stderr = fopen('php://stderr', 'w'); // https://codex.wordpress.org/Editing_wp-config.php#MySQL_Alternate_Port // "hostname:port" // https://codex.wordpress.org/Editing_wp-config.php#MySQL_Sockets_or_Pipes // "hostname:unix-socket-path" list($host, $socket) = explode(':', getenv('WORDPRESS_DB_HOST'), 2); $port = 0; if (is_numeric($socket)) { $port = (int) $socket; $socket = null; $user = getenv('WORDPRESS_DB_USER'); $pass = getenv('WORDPRESS_DB_PASSWORD'); $dbName = getenv('WORDPRESS_DB_NAME'); $maxTries = 10; $mysql = new mysqli($host, $user, $pass, '', $port, $socket); 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($dbName) . '`')) { fwrite($stderr, "\n" . 'MySQL "CREATE DATABASE" Error: ' . $mysql->error . "\n"); $mysql->close(); exit(1); $mysql->close(); EOPHP echo >&2 echo >&2 "WARNING: unable to establish a database connection to '$WORDPRESS_DB_HOST'" echo >&2 ' continuing anyways (which might have unexpected results)' echo >&2 # now that we're definitely done writing configuration, let's clear out the relevant envrionment variables (so that stray "phpinfo()" calls don't leak secrets from our code) for e in "${envs[@]}"; do unset "$e" exec "$@" #!/bin/bashset -euo pipefail# usage: file_env VAR [DEFAULT]# ie: file_env 'XYZ_DB_PASSWORD' 'example'# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of# "$XYZ_DB_PASSWORD" fro...
用docker部署tensorflow-serving:gpu时,参照官方文档:https://tensorflow.google.cn/tfx/serving/docker 本应该是很简单的部署,没想到会一直出现这个错误: 经过github和网上的一个朋友了解到,关键问题可能是服务器机器的cpu比较弱(原来是我的cpu确实比较弱:我是在服务器分出来的一个虚拟机上部署的,本...
举例说明 我是要删除文件夹代码 如果这个文件夹中得 某些文件正在被其他的项目引用着 而且那个项目还是运行中 那么就会报错 不许这样操作 删除之前 先把运行的代码关闭了 再次运行就可以了 搭建 Wordpress 需要有nginx、 php 、mysql 一、安装Docker docker安装参考:https://blog.csdn.net/clover661/article/details/122226083?spm=1001.2014.3001.5501 二、拉取alpine最新镜像 alpine作为基础镜像,相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5 MB 左右,目前
1、关闭防火墙,安装docker [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 [root@localhost ~]# yum -y install docker 2、docker加速 [root@localhost ~]# cat /etc/docker/daemon.json "registry-mirrors": ["https://yol1de5p.mi
wordpress 安装出现“抱歉,我不能写入 wp - config . php 文件”,这主要是对该文件没有写权限。 解决方法1: 1、在 wordpress 的根目录有个 wp - config -sample. php 文件 2、安装 wordpress 安装说明把安装说明的文字替换到 wp - config -sample. php 文件中 3、修改 wp - config -sample. php 文件为 wp - config . php 并上传
最近在虚拟机节点上装tensorflow,发现出现如下问题,谷歌也发现答案很少:说一下系统是ubuntu 16.04的,后来想想降级试试:pip uninstall tensorflow pip install tensorflow==1.5发现成功:...
池鱼666: [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s 我卡在了这里 zookeeper集群 CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)增加除了各种控件外,文章正文的字数;(2)使用更多的站内链接;(3)提升标题与正文的相关性。 Vue3 - 详细实现解析Markdown内容生成侧边栏Toc目录索引,识别文章内容根据大标题/小标题自动生成多级文章目录,点击目录导航时跳转到文章内容对应的锚点位置带过渡动画,滑过锚点时高亮对应标题