Tag:

为什么连接到Google Cloud SQL在Docker容器内失败,但在Docker容器外部成功?

我在Golang写了一段代码来testingGoogle Cloud SQL: package main import ( "database/sql" "flag" "fmt" _ "github.com/go-sql-driver/mysql" ) var addr = flag.String("db", "", "The database address") func main() { flag.Parse() db, err := sql.Open("mysql", *addr) if err != nil { fmt.Println("mysql open failed: ", err) return } defer db.Close() err = db.Ping() if err != nil { fmt.Println("mysql ping failed: […]

golang – 使用io.Copy从bufio.Reader复制到STDOUT的怪异字符

我有一个应用程序,附加到一个docker容器得到它的输出使用docker库提供的containerAttach()函数。 该函数返回一个带有指向bufio.Reader的指针的HijackedResponse结构体。 我试图将文本从bufio.Readerstream到标准输出,并获取写入标准输出的string中的意外字符。 代码: _, err := io.Copy(os.Stdout, hijackedResponse.Reader) 预期产出: Refreshing Terraform state in-memory prior to plan… The refreshed state will be used to calculate this plan, but will not be persisted to local or remote state storage. 实际产出: 6Refreshing Terraform state in-memory prior to plan… =The refreshed state will be used to calculate this […]

将数据从主机发送到docker集装箱池

我正在创build一个在线REPL :我有一个go服务器,它将在docker容器中运行给定的脚本。 我正在考虑与这些容器build立一个连接池,所以每次我想运行一个脚本时都不需要创build一个容器。 知道了,如果考虑到在容器创build之前它们不存在,我将如何去运行这些脚本? 我有一些想法,但是我对Docker真的很陌生 ,所以我想要一些反馈。 使用exec ,将脚本作为parameter passing,然后读取STDOUT作为答案 保存文件在一个安装的目录,并共享回输出到同一目录(例如,我保存/tmp/foobar.go ,然后导致/tmp/foobar.output.go 其他想法?

当运行Go图像时,无法识别导入path“main / testPackage”

我试图编译一个使用docker的golang项目,我很难得到“去得到”编译我的包。 在我的dockerfile中可以看到容器的整个设置: FROM buildpack-deps:jessie-scm # gcc for cgo RUN apt-get update && apt-get install -y –no-install-recommends \ g++ \ gcc \ libc6-dev \ make \ pkg-config \ && rm -rf /var/lib/apt/lists/* ENV GOLANG_VERSION 1.8 ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz ENV GOLANG_DOWNLOAD_SHA256 53ab94104ee3923e228a2cb2116e5e462ad3ebaeea06ff04463479d7f12d27ca RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c – […]

Golang高docker停泊时间在docker/ kubernets

我正在将使用AWS Elastic Beanstalk编写的Web应用程序迁移到Kubernets ,我发现在运行应用程序时,垃圾收集器暂停时间(我使用Newrelic来监视应用程序)增加了大约100。 我相信这跟Kubernet的CPU限制有关。 有没有人有什么想法是什么真的造成它? 有可能克服吗? 下面是这个区别的一个小例子。 Elastc豆茎: Kubernets: 经过一些testing和更多的研究,我发现了一些有趣的事情 Docker的CPU限制似乎对GC时间/暂停有很大的影响。 经过一些testing,我得到的CPU限制为500m ,这意味着一个8核心机器的1/2 CPU。 我设置GOMAXPROCS = 1和GOGC = 1000 ,这导致更less和更快的GC暂停,但平均内存使用增加。 以下是Kubernets和Elastic Beanstalk的概述 Kubernetes: Elastic Beanstalk:

如何让Vim不要求确认交互?

如果我在Dockerfile中运行以下命令: vim -c "GoUpdateBinaries" 它的工作,但最终卡住build设: Press ENTER or type command to continue 我怎样才能避免呢? 我试过了: RUN vim -c "execute 'GoUpdateBinaries' | execute 'redraw'" 这从我的terminal,但不是从Dockerfile,而是build立一个新的形象,因为它介绍了 – 更多 – 在屏幕上(不知道为什么?),然后我不能侧步

在GAE的Dockerised Golang Web应用程序中的smtp sendmail不起作用

我有一个dockerised的networking应用程序部署在GAE的wriiten中去。 付款模块使用分条签出API,成功触发电子邮件通知。 在debugging时,我观察到下面的代码行不被执行。 我试过端口587,结果是一样的。 err := smtp.SendMail("smtp.gmail.com:465", auth, from, []string{to}, []byte(msg)) 我在我的本地m / c上有相同的应用程序,这个function在它上面工作。 虽然我没有在本地m / c上使用docker。 我在'from'用户字段中使用与我的GAE帐户相同的用户凭据。 这可能是代码失败的原因。 或者,应该在dockerfile中描述smtp服务auth参数以及要公开的端口。 鉴于只有4个端口可用,在GAE中映射端口465或587的正确方法是什么? 我正在使用Golang图像1.7.1 docker日志不显示任何错误。 但是电子邮件不会被发送。 容器的etc / resolv.conf具有以下DNS条目 search c.cloud-devshell-prod.internal. google.internal. nameserver 169.254.169.254 options: ndots5 将不胜感激任何build议.. 谢谢

在Docker中设置Go Glide

我正在用Go和Glide在Docker中构build一个应用程序。 我也必须使用reflection来自动触发编译。 我无法弄清楚如何使Glide与Docker协同工作。 Dockerfile FROM golang:1.8.1-alpine ENV GOBINARIES /go/bin ENV BUILDPATH /code ENV REFLEXURL=http://s3.amazonaws.com/wbm-raff/bin/reflex1.8a ENV REFLEXSHA=19bdbbb68c869f85ee22a6b7fa9c73f8e5b46d0fe7a73df37e028555a6ba03e8 WORKDIR $GOBINARIES RUN rm -rf /var/cache/apk/* RUN wget -q "$REFLEXURL" -O reflex RUN chmod +x /go/bin/reflex ENV TOOLS /go/_tools RUN mkdir -p $BUILDPATH ENV PORT 5000 EXPOSE $PORT RUN mkdir -p $TOOLS ADD build.sh $TOOLS ADD reflex.conf $TOOLS RUN […]

如何构buildmoby的ARM v7 Dockerfile?

在Dockercon 17期间, moby已经被正式宣布为docker核心项目的中心。 试图在Linux x86机器上使用他们的ARM参考Dockerfile来运行。 我跑这个设置qemu的arm: $ wget https://github.com/multiarch/qemu-user-static/releases/download/v2.8.1/x86_64_qemu-arm-static.tar.gz $ tar -xvzf x86_64_qemu-arm-static.tar.gz # switch to binfmt $ update-binfmts –enable qemu-arm $ update-binfmts –display qemu-arm $ wget https://github.com/moby/moby/blob/master/Dockerfile.armhf 然后编辑Dockerfile将qemu-arm bin COPY到容器中: 最后,我正在尝试构build容器: $ wget https://github.com/moby/moby/blob/master/Dockerfile.armhf $ docker build –no-cache=true -t "try-moby:arm-dev" -f "Dockerfile.armhf" . 但它无法build立golint( fatal error: rt_sigaction failure ): —> f573839c7252 Removing intermediate container […]

stub.GetHistoryKeys()报告GetHistoryKeys()函数未定义。 当试图去build立我的Chaincode

我是Hyperledger的新手 。我使用docker来运行Hyperledger。 hyperledger/fabric-peer:latest来自Docker集线器的hyperledger/fabric-peer:latest ,能够在我的Chaincode中运行stub.CreateTable() , stub.GetRows() , stub.InsertRows()和其他一些函数。 但是当我试图跑步 stub.GetHistoryKeys() or stub.GetCompositeKeys() …etc在我的chaincode它报告错误 stub.GetHistoryForKey undefined (type shim.ChaincodeStubInterface has no field or method GetHistoryForKey) 我发现在我的interface.go文件中没有这样的function。 谷歌search了很多,但什么都没find。任何人都可以告诉正确的hyperledger/fabric-peer图像,以便上述function可以在Chaincode中运行。