Tag:

开发Golang应用程序以在Docker容器中运行的最佳实践/方法

基本上标题说什么…是否有一个最佳实践或有效的方法来开发一个将被Docker化的Golang应用程序? 我知道你可以装载卷来指向你的源代码,对于PHP等语言来说,它不需要编译你的代码。 但是对于Go来说,与Docker一起开发似乎是一件痛苦的事情,因为我猜你几乎只有两种select。 首先会有一个Dockerfile,它只是onbuild,所以当一个容器运行时,它启动的应用程序,因此不得不build立一个新的形象,每一个变化(无论是否小)。 或者,你可以将你的源代码目录安装到容器目录中,然后附加到容器本身,并像通常一样执行手动生成/运行。 这两种方式实际上是我看到它发生的唯一方式,除非您不在Docker容器中开发您的Go应用程序。 只要正常开发它,然后使用临时图像的方法,你预先生成一个二进制文件,然后将其复制到您的容器,当你准备好运行它。 我认为这可能是要走的路,但我想问更多的专业人士,也许会得到一些关于这个话题的反馈。

不能调用从另一个程序发送的btrfs

我在调用btrfs中的send命令时遇到问题。 这是症状: 用sudo调用它: sudo btrfs send /path/to/snapshot #works 调用它没有sudo失败: btrfs send /path/to/snapshot ERROR: failed to determine mount point for /path/to/snapshot 我试图从另一个程序调用这个,奇怪的是它给了我一个不同的错误。 从程序内部调用(使用go-lang中的exec),会出现以下错误: ERROR: can't perform the search -Operation not permitted ERROR: could not resolve root_id for /path/to/snapshot 我已经尝试从程序内和没有sudo,它似乎有相同的结果。 注意这是在docker里面运行的。

在Docker Container或cron job中运行Go脚本?

我已经在Docker上部署了Go应用程序。 除了运行主程序之外,我还想定期运行更新数据的工作。 哪个更好? 在主程序上运行时使用并发(通道)定期执行作业。 Crontab在系统上注册定期作业。 但是我不知道如何在Docker这样做 在Dockerfile或docker中运行单独的cronjob的最佳方式是什么? 请帮帮我。 谢谢!

我如何debugging“没有默认机器人”?

我有一个在Google AppEngine上运行的应用程序(用Go编写),正在转移到托pipe虚拟机。 该应用程序已经embedded在一个Docker容器中, Dockerfile了轻微的修改。 由gcloud preview app run app.yaml启动的本地开发服务器运行良好并按预期运行。 当试图部署,但是,我遇到了以下错误。 使用gcloud的–verbosity debug我能够隔离导致麻烦的请求(抱歉重复输出): INFO: Preparing project for VM runtimes. DEBUG: Running [appcfg.py] with: appcfg.py –application=coduno –called_by_gcloud –noisy –oauth2 –oauth2_credential_file=/Users/flowlo/.config/gcloud/legacy_credentials/flowlo@example.com/singlestore.json –skip_sdk_update_check –version=master prepare_vm_runtime 11:53 AM Host: appengine.google.com DEBUG: _Authenticate configuring auth; needs_auth=False DEBUG: Sending request to https://appengine.google.com/api/vms/prepare?app_id=coduno headers={'X-appcfg-api-version': '1', 'content-length': '0', 'Content-Type': 'application/octet-stream'} body= DEBUG: Got http […]

编译/安装libcontainer时由于自定义编译内核错误

我在libcontainer上做了一个master的git克隆,然后通过CONTRIBUTING.md指南。 ./update-vendor.sh go get -d ./… make direct-build # Run the tests make direct-test-short | egrep –color 'FAIL|$' # Run all the test make direct-test | egrep –color 'FAIL|$' “make direct-build”的输出给出: go build -v . ./apparmor ./cgroups ./cgroups/fs ./cgroups/systemd ./configs ./configs/validate ./criurpc ./devices ./integration ./label ./netlink ./nsenter ./nsinit ./seccomp ./selinux ./stacktrace ./system ./user ./utils ./xattr […]

将stream动应用程序部署到泊坞窗中

现在我正在使用Windows和goclipse开发RESTfull API。 testingenvironemnt由Vagrantpipe理的less数虚拟机组成。 这些机器包含nginx,PostgreSQL等。应用程序应该部署到分离的虚拟机上的Docker。 第一次使用像这样的指南部署应用程序没有问题: https : //blog.golang.org/docker 。 我已经阅读了大量的信息和指南,但仍然完全困惑如何在代码完成一些更改后,自动化部署过程并更新Docker中的应用程序。 在目前阶段,代码的更改经常进行,所以部署应该很快。 你能否以正确的方式build议我为这种情况设置某种本地CI? 什么方法会更好? 非常感谢。

去共享Docker容器共享库

在Docker中有一种方法可以将容器化go应用程序所需的Go共享库放在只读共享内存区域中吗? 目标是允许许多容器执行相同的代码来减less容器中的内存需求。 我期望一个副作用将是更小的容器图像。 这些Go共享库在内存中将在哪里?

STDIN没有连接到重新启动的Docker容器

如果一个容器被停止并重新启动,则附加的STDIN上的数据仅在首次启动时传递给容器。 在随后的所有启动中,在STDIN上找不到数据。 我正在使用fsouza/go-dockerclient 。 任何帮助将不胜感激。 我发现了一个相关的问题 ,但是它并不在任何地方。 如果这种行为是有意的,有什么解决方法? 我需要有两个阶段的容器,每次都有不同的STDIN数据。

运行在Docker HTTP运行状况检查的Consul返回“通过对等方重置连接”

我们通过docker运行领事,并使用HTTP身份检查到具有自签名证书的URL( https://10.1.24.68:5012/status )。 但是,我得到以下错误: 2016/06/10 10:29:42 [WARN]代理:http请求失败' https://10.1.24.68:5012/status ':获取https://10.1.24.68:5012/status :读取tcp 10.3.2.11 :55549-> 10.1.24.68:5012:read:由对等方重置连接 当我们使用wget命令使用脚本运行状况检查时,它也能正常工作,但这并不理想。 这是Consul的代码行抛出上述错误。 当运行健康状况检查到一个HTTP URL( http:// localhost:5012 / status )它运作。 这可能是一个证书问题? 我已将证书添加到/etc/ssl/certs/ca-certificates.crt和/usr/share/local/ca-certificates.crt 。 HALP!

在向Docker部署Go应用程序时遇到问题

嗨,我是新来的,这是我第一次与docker工作,将应用程序打包到一个容器。 我正在一个应用程序位于dir下的linux虚拟机上工作:/ home / core / app / app-name在dir应用程序名称中有main.go程序和Dockerfile。 Dockerfile包含这个: FROM golang:latest RUN mkdir /app ADD . /home/core/app/app-name WORKDIR /app/app-name RUN go build -o main . CMD ["/app/main"] EXPOSE 8080 我试过从dir / home / core / app / app-name运行: docker build -t app-image . 但是我得到这个错误: 无法加载软件包:软件包。:/ app / stars-app中没有可build立的软件源文件命令'/ bin / sh -c go build […]