MYSQL SQLSTATE[HY000] [2002] Host is unreachable
- SQLSTATE[HY000] [2002] Host is unreachable
#!/bin/bash
docker exec -i redis_redis_1 redis-cli <<'EOF'
auth xxxxxx
select 0
flushdb
exit
EOF#!/bin/bash
docker exec -i redis_redis_1 redis-cli <<'EOF'
auth xxxxxx
flushall
exit
EOF services key, or omit the version key and place your service definitions at the root of the file to use version 1.[root@localhost course2]# docker-compose -v
docker-compose version 1.7.0, build 0d7bf73
[root@localhost course2]# docker-compose down && docker-compose up -d
ERROR: Version in "./docker-compose.yml" is invalid. Either specify a version of "2" (or "2.0") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/
[root@localhost course2]# curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 638 100 638 0 0 400 0 0:00:01 0:00:01 --:--:-- 400
34 11.2M 34 3943k 0 0 5294 0 0:36:59 0:12:42 0:24:17 0
curl: (56) OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104
[root@localhost course2]# docker-compose down && docker-compose up -d --build 2.0
[30751] Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg
[root@localhost course2]# curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 638 100 638 0 0 425 0 0:00:01 0:00:01 --:--:-- 425
100 11.2M 100 11.2M 0 0 15073 0 0:12:59 0:12:59 --:--:-- 17374
[root@localhost course2]# docker-compose -v
docker-compose version 1.23.2, build 1110ad01阿里云的LINUX中安装办法
[root@xgblog ~]# yum install docker-compose -y
. . .
Complete!
[root@xgblog ~]# docker-compose -v
bash: /usr/local/bin/docker-compose: Permission denied
[root@xgblog ~]# chmod +x /usr/local/bin/docker-compose
[root@xgblog ~]# docker-compose -v
docker-compose version 1.23.2, build 1110ad01
不行的话再加软链
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose index.php 发布入口文件<?php
if (empty($_SERVER['DOCUMENT_ROOT']) || strpos($_SERVER['DOCUMENT_ROOT'], ':') === false) {
$hostSystem = 'linux';
} else {
$hostSystem = 'windows';
}
echo '<h1><a href="">系统版本: ' . $hostSystem . '</a></h1>';
$baseDir = dirname(__FILE__, 2);
$baseDir = str_replace('\\', '/', $baseDir);
$dirs = scandir($baseDir);
unset($dirs[0]);
unset($dirs[1]);
$dirList = [];
foreach ($dirs as $key => $dir) {
if (!is_dir($baseDir . '/' . $dir . '/.git')) {
unset($dirs[$key]);
} else {
$dirListItem = [
'value' => $dir,
'app_type' => '',
];
if (file_exists($baseDir . '/' . $dir . '/src/public/index.php') || file_exists($baseDir . '/' . $dir . '/public/index.php')) {
$dirListItem['app_type'] = 'laravel';
} else if (is_dir($baseDir . '/' . $dir . '/src/runtime') || is_dir($baseDir . '/' . $dir . '/runtime')) {
$dirListItem['app_type'] = 'hyperf';
} else {
$dirListItem['app_type'] = 'front';
}
$dirList[$dir] = $dirListItem;
}
}
$dirs = array_values($dirs);
$requestMethod = empty($_SERVER['REQUEST_METHOD']) ? 'GET' : $_SERVER['REQUEST_METHOD'];
switch ($requestMethod) {
case 'GET':
echo '<form action="" method="POST">
<h3>选择需要执行的目录: </h3>
';
$dirLists = [];
foreach ($dirList as $dirListItem) {
$dirLists[$dirListItem['app_type']][] = $dirListItem;
}
foreach ($dirLists as $appType => $dirList) {
echo '<h2><font style="color: blue;">' . $appType . '</font></h2>';
foreach ($dirList as $dirListItem) {
echo '<label><input type="radio" name="dir" value="' . $dirListItem['value'] . '">' . $dirListItem['value'] . '</label>';
}
}
echo '
<br><input type="submit" value="执行">
</form>
<style>
label{
font-weight: lighter;
}
</style>';
break;
case 'POST':
// 执行发布
$request = $_REQUEST;
$dir = empty($_POST['dir']) ? '' : $_POST['dir'];
if (empty($dir)) {
die('请选择目录');
}
if (empty($dirList[$dir])) {
die('目录不在白名单中');
}
$cmd = [];
$appType = $dirList[$dir]['app_type'];
$startTTL = microtime(true);
echo "<pre>";
if ($hostSystem == 'windows') {
} else {
$da = [];
$branch = 'develop';
$branch = 'master';
switch ($appType) {
case 'hyperf':
$shell = 'sudo ' . dirname(__FILE__) . '/php_deploy_hyperf.sh ' . $dir . ' ' . $branch;
echo '<h3>' . $shell . '</h3>';
system($shell, $status);
break;
case 'laravel':
$shell = 'sudo ' . dirname(__FILE__) . '/php_deploy_laravel.sh ' . $dir . ' ' . $branch;
echo '<h3>' . $shell . '</h3>';
system($shell, $status);
break;
case 'front':
$shell = 'sudo ' . dirname(__FILE__) . '/php_deploy_front.sh ' . $dir . ' ' . $branch;
echo '<h3>' . $shell . '</h3>';
system($shell, $status);
break;
default:
die('未能识别需要执行的代码类型');
}
}
echo '用时: ' . intval((microtime(true) - $startTTL) * 1000) / 1000;
echo '</pre>';
if ($status) {
echo "执行失败";
} else {
echo "执行成功";
}
break;
}vim php_deploy_front.sh#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/root/.nvm/versions/node/v13.9.0/bin
export PATH
project_dir=/home/project
project_name=$1
echo $project_dir"/"$project_name
branch=$2
function gitPullCover(){
project_name=$1
branch=$2
project_dir=$3
self_path=$project_dir"/history/"$project_name;
cp -rf $project_dir"/"$project_name $project_dir"/history/"
history_path=$project_dir"/history/"$project_name
covertimes=5;
if [ ! -d $history_path ];then
mkdir $history_path
covertimes=20
fi
history_path=$self_path"_history"
if [ ! -d $history_path ];then
mkdir $history_path
fi
echo "覆盖"covertimes"版本"
covertimes=5
for vv in {5..1}
do
cd $self_path
git checkout $branch
git_hashcode=`git log -n $vv --pretty=format:"%H"`
v2=0;
for line in $git_hashcode
do
declare -i v2=$v2+1;
if [ "$v2" -eq "$vv" ]
then
echo $line;
git checkout $line
git reset --hard
cd ../
echo "$self_path/* $history_path"
cp -rf $self_path/* $history_path
fi
done
done
cd $self_path
git checkout $branch
}
function gitPull(){
cd $1
echo `git log -n 1`
git log -n 1
git checkout .
git pull origin $branch
}
function dockerReload(){
cd $1"/src"
docker-compose down && docker-compose up -d
}
gitPullCover $project_name $branch $project_dir
gitPull $project_dir"/"$project_name $branch
vim php_deploy_laravel.sh#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/root/.nvm/versions/node/v13.9.0/bin
export PATH
project_dir=/home/project/"$1"
echo $project_dir
branch=$2
function gitPull(){
cd $1
echo `git log -n 1`
git log -n 1
git checkout .
git pull origin $2
}
gitPull $project_dir $branch
vim php_deploy_hyperf.sh#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/root/.nvm/versions/node/v13.9.0/bin
export PATH
project_dir=/home/project/"$1"
echo $project_dir
branch=$2
function gitPull(){
cd $1
echo `git log -n 1`
git log -n 1
git checkout .
git pull origin $branch
}
function dockerReload(){
cd $1"/src"
docker-compose down && docker-compose up -d
}
gitPull $project_dir
dockerReload $project_dirsh_cover_history.sh#!/bin/bash
self_path=`pwd`;
history_path=$self_path"_history"
if [ ! -d $history_path ];then
mkdir $history_path
fi
for vv in {20..1}
do
cd $self_path
git checkout master
git_hashcode=`git log -n $vv --pretty=format:"%H"`
v2=0;
for line in $git_hashcode
do
declare -i v2=$v2+1;
if [ "$v2" -eq "$vv" ]
then
echo $line;
git checkout $line
git reset --hard
cd ..
cp -rf $self_path/* $history_path
fi
done
done
cd $self_path
git checkout master
# cp -rn $self_path/* $history_pathhistoryproject_xxxx 需要做版本历史的目录到 history 目录中sh_cover_history.sh 到 history/project_xxxx/history/project_xxxx/ 目录, 执行 sh_cover_history.sh 文件