我遇到了一系列试图使用的问题docker exec和postgresql psql实用程序来恢复在docker 1.3中运行的postgresql安装.我有一个运行OK的备份docker exec mycontainer pg_dumpall --clean --user=postgres --no-password > /tmp/backup.sql.
我遇到了尝试恢复的问题,包括:
docker exec仅在容器运行时才有效,但psql无法通过主动连接的客户端正常还原pg_ctl stop将退出postgres服务器进程,该进程将停止主容器和docker exec您正在运行的进程.docker exec以root pg_ctl身份运行但必须以postgres运行(我试图使用pg_ctl来停止postgres,以便还原可以工作)因此,假设postgresql容器正在运行并为应用程序提供活动连接,我该如何恢复它?寻找关于干净地停止,运行恢复,启动等的细节.
Env是docker 1.3,postgresql 9.4,数据存在于/var/lib/postgresql/data容器中安装的数据卷中.我.sql在docker主机文件系统上有一个有效的备份文件.
更新:仅供参考我对任何有效的解决方案持开放态度,无论是否涉及docker exec.如果我应该运行一个单独的容器并链接到主postgresql容器并通过TCP与它通信,例如,只要我得到一些可行的流程就可以了.
这是我到目前为止所拥有的.建议欢迎.它是一个bash脚本(带有一些在构建过程中进行插值的胡子变量),旨在在docker主机上运行.
#!/bin/bash
docker_sql() {
docker exec \
--interactive \
--tty \
"${container}" \
psql --user="${user}" --no-password --file="$1"
}
export DOCKER_HOST=tcp://localhost:2375
container="{{appName}}_db"
user=postgres
backup_path="$1"
if [[ -z "${backup_path}" ]]; then
echo "Provide a path …Run Code Online (Sandbox Code Playgroud) 我正在使用 AngularJS 构建一个单页应用程序。我正在考虑 2 种方法来处理服务器端会话到期的长时间空闲期。
我的看法是这在技术上是可行的,但 UX 可能有点刺耳,实现可能会变得复杂,因为可能有多种类型的 AJAX 请求触发 401 响应(单击链接、编辑字段等)
我认为这种方法可能是一种更好的用户体验,并且由于没有重试逻辑,因此实施起来也更简单。
这些中的任何一个都让你觉得可靠吗?有更好的方法吗?
考虑此ES2015模块以及在节点v4.4.5中运行时的行为.
'use strict'
const outer = 1
switch ('foo') {
case 'bar':
const heyBar = 'HEY_BAR'
break
case 'baz':
const heyBaz = 'HEY_BAZ'
break
default:
const heyDefault = 'HEY_DEFAULT'
}
console.log(
outer, // 1, makes sense, same top-level scope
heyBar, // undefined. huh? I thought switch did NOT create a child scope
heyBaz, // undefined. huh? I thought switch did NOT create a child scope
heyDefault) // 'HEY_DEFAULT' makes sense
Run Code Online (Sandbox Code Playgroud)
这似乎与我内部不一致.如果switch语句没有创建词法范围,我希望所有hey*变量都是主范围的一部分,并且所有变量都表现一致.如果switch语句确实创建了一个词法范围,我仍然希望它们是一致的,但是在case子句中声明的变量的行为就像它们在子范围内一样,而default子句中的变量的行为就像它在外部范围中一样.
我的问题是 switch语句中是否涉及任何子范围,如果是,那么它们的行为方式有哪些细节?
在节点v6.4.0中,行为是不同的.看起来切换块确实创建了子块范围. …
我正在尝试使用 terraform 创建 CodePipeline 作业。我已经有一个可用的 CodeBuild 项目。这是我的资源:
resource "aws_codepipeline" "my-project" {
name = "my-project"
role_arn = "${aws_iam_role.my-project-codepipeline.arn}"
artifact_store {
location = "${aws_s3_bucket.my-artifacts.bucket}"
type = "S3"
}
stage {
name = "Source"
action {
name = "Source"
category = "Source"
owner = "AWS"
provider = "CodeCommit"
version = "1"
configuration {
ProjectName = "my-project"
Branch = "master"
}
}
}
stage {
name = "Build"
action {
name = "Build"
category = "Build"
owner = "AWS"
provider = "CodeBuild"
version = …Run Code Online (Sandbox Code Playgroud) 我需要将SQL Server 2008 R2 Express从SP1升级到SP2.选择@@版本显示10.50.2500.0
我已经下载了我认为正确的软件包,但是当我尝试安装时,我被提示安装新实例或升级现有实例.选择第二个选项最终会让我选择混合模式或Windows身份验证.我知道那是什么,但是,为什么要问我这个?除了安装Service Pack之外,我不想更改任何有关我的环境的信息,包括身份验证模式或SA帐户的密码等.
难道我做错了什么?
我正在尝试编写一个函数,它将封装一系列链接的迭代器方法调用(.lines().map(...).filter(...)),我目前已经重复了这些调用.我无法弄清楚要编译的类型签名.如果对于Rust来说这是不可能的或非常单一的,我会接受一种惯用法的建议.
use std::fs;
use std::io;
use std::io::prelude::*;
use std::iter;
const WORDS_PATH: &str = "/usr/share/dict/words";
fn is_short(word: &String) -> bool {
word.len() < 7
}
fn unwrap(result: Result<String, io::Error>) -> String {
result.unwrap()
}
fn main_works_but_code_dupe() {
let file = fs::File::open(WORDS_PATH).unwrap();
let reader = io::BufReader::new(&file);
let count = reader.lines().map(unwrap).filter(is_short).count();
println!("{:?}", count);
let mut reader = io::BufReader::new(&file);
reader.seek(io::SeekFrom::Start(0));
let sample_size = (0.05 * count as f32) as usize; // 5% sample
// This chain of iterator logic is duplicated
for …Run Code Online (Sandbox Code Playgroud) angularjs ×1
docker ×1
ecmascript-6 ×1
iterator ×1
javascript ×1
node.js ×1
postgresql ×1
restore ×1
rust ×1
session ×1
sql ×1
sql-server ×1
terraform ×1
v8 ×1