Tag: 开发环境

如何在Docker中保持数据存储的可移植性?

我正在改变我的开发环境到Docker,到目前为止我非常高兴,但是我有一个基本的问题。 但首先让我描述一下我登陆的是什么样的设置。 我正在使用Web开发环境的示例。 所以我在自己的容器里组织每一项服务 谁谈论一个MySQL容器,并有一个数据容器(称为应用程序)的来源的PHP。 nginx链接到PHP容器并提供数据容器(app)中的文件。 应用程序基本上是与PHP(以节省空间)相同的容器,并将我的项目文件夹挂载到容器中。 应用程序然后将项目文件夹提供给其他容器。 那么有一个mysql容器有他自己的数据容器称为数据 与mysql容器交谈的phpmyadmin容器 最后还有数据,数据库的数据容器。 我不确定每个人的好处是否清楚,所以它是(因为你可以把所有东西都放到一个容器中)。 将我的主机上的项目文件夹安装到Docker容器中让我使用我最喜欢的编辑器,并使我不断发展。 将数据库引擎与其存储解耦,可以自由更改引擎,但保留数据。 (因为除编辑器和Docker之外,您不必安装任何编程工具。) 我的目标是让整个设置非常便于携带,因此在主机系统上安装我的项目代码的最新版本,而不是居住在容器内是一个巨大的优势。 我在我的项目文件夹里面组织了上面描述的设置在一个叫做“ 所以我可以将整个项目文件夹复制到另一台机器上,input“stillocker-compose”并启动。 我实际上已经把它放在我的Dropbox中,可以像这样切换机器。 很甜蜜 但是有一个缺点。 数据库存储不可移植,因为它位于Virtualbox文件系统的某处。 我尝试将数据存储挂载到主机操作系统中,但这并不奏效。 这些文件在那里,但是当我尝试读取或写入文件时,会出现各种错误。 我想我的问题是,如果有一个最佳做法,以保持在不同的开发机器之间的数据库存储同步(或高度可移植性)。

泊坞内的GAE。 不能暴露8080

我有一个GAE应用程序和一群人在工作,这样可以节省人们设置所有依赖关系的麻烦,而且我希望允许他们在Docker容器中运行gae开发服务器。 我的dockerfile结束于: CMD dev_appserver.py app_localhost.yaml 而我的docker撰写就像: version: '3' services: my_image: build: ./my_image image: my_image ports: – "8080:8080" – "8000:8000" volumes: – ./my_image:/usr/src/ build设这个工作正常。 而且用docker-compute up运行它似乎也能正常工作。 我的意思是,它有友好的输出说默认模块是可以在8080和所有的好东西。 但是,如果我通过铬访问localhose:8080我得到ERR_SOCKET_NOT_CONNECTED。 如果我尝试curl它,我得到curl: (56) Recv failure: Connection reset by peer 。 这一切运行良好,并在容器外运行时可访问。 docker ps 56 ↵ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3a2ae48f1f66 waxed_backend_image "/bin/sh -c 'dev_a…" 9 […]

使用Docker for Development,我错过了这个观点吗?

如果您需要安装Python,Go,Ruby及其依赖项,以便在IDE(例如VS Code或Jetbrains等效项)中正常工作,那么使用Docker进行开发有什么意义? 没有它们,你就不会有一些开发工具,比如适当的debugging器。 看起来你需要做所有额外的步骤来设置开发有或没有docker。 那么为什么要使用它? 我理解部署,但不是为了开发。

用docker写本地开发 – 使用Mysql localhost

我是一名初学者,在我的Mac上使用Docker和docker-compose进行本地开发。 目前,如果我重新启动我的容器,MySql数据将被清除。 我想为MySql本地开发启用持久存储。 有没有一种方法可以将运行在Docker容器中的应用程序连接到我的Mac主机上运行的MySql? 我docker-compose.yaml文件: mysql: build: ./mysql container_name: mysql environment: MYSQL_ROOT_PASSWORD: ****** restart: on-failure ports: – 3306:3306 除了将docker应用程序连接到本地机器上的MySql之外,还有其他方法可以实现吗?

用Docker开发Django

我正在尝试为使用Docker的Django Web应用程序创build自己的开发环境。 我的问题是我应该如何设定它的发展? 我已经创build了一个使用Django开发服务器和db的Dockerfile ,这很好吗? 还是应该使用独立的容器与专用的Web和数据库服务器? 我应该如何创build新的迁移? 比方说,我使用-v将代码安装到容器中,对模型的更改需要创build新的迁移,因此,是否应该使安装可写,并使用容器内的创build迁移? 还有什么其他的select? 我正在考虑向Dockerfile添加一条RUN指令,在迁移没有改变时, Dockerfile将应用迁移以便使用caching。 这是一个很好的做法吗?

如何将Docker文件部署到真机上

背景:我正在使用Docker来构build我的开发环境(Web应用程序,nginx,gunicorn,postgress需要提及的几个)。 我希望我的开发环境与生产环境相匹配。 我现在使用Debian 7作为基础发行版,但问题不是与Debian相关的。 我不希望docker上的实际生产(安全更新,监控,日志logging提及less数,但多数民众赞成在不同的问题为什么不),但我想使用真正的Debian 7作为生产环境。 问题:有没有办法以本地命令的forms运行构builddocker-image的命令,例如: docker deploy_to_host <Dockerfile> ,它将以root用户命令的forms运行RUN指令。这与我将主机根用户命令open和手动复制粘贴命令。 谢谢!

设置Docker容器的图像构build值

假设我在Fedora上以reynierpmlogin,并且reynierpm构build一个Docker镜像。 该图像将包含一个LAMP环境。 我有一个Apache虚拟主机(VH)默认文件,如下所示: <VirtualHost *:80> #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /var/www> AllowOverride All Require all granted </Directory> ErrorLog /dev/stdout CustomLog /dev/stdout combined </VirtualHost> 作为构build过程的一部分,该文件被复制到图像上的适当位置。 我可以从主机获取login的用户名,并dynamic地设置到这个VH? 最后我想得到以下结果: <VirtualHost *:80> ServerName reynierpm.dev ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /var/www> AllowOverride All Require all granted </Directory> ErrorLog /dev/stdout CustomLog /dev/stdout combined </VirtualHost> 我知道,我可以从bash中使用$(whoami)获取当前用户的值,但是如何在Docker构build中将其插入/设置为VH文件? 这是Dockerfile的内容: FROM ubuntu:14.04.5 MAINTAINER […]

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

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

在镜像,但独立的生产环境中发生故障

我在“开发环境应尽可能接近生产环境”方面遇到一些问题。 (生产机器的操作系统是Linux。) 我对开发步骤的理解(粗略): 代码,编译,testing/运行,重复 “通常情况下,”我会在自己的机器上浏览这些代码,然后将代码推送到CI进行testing,并可能进行部署。 CI将负责在与生产相匹配的环境中运行testing,这样,如果testing通过,则认为代码在生产中也可以正常工作。 环境较大的问题 ☑某种数据库。 ☑作业处理池 – 用于一些长时间运行的后台任务。 ☑用户帐户pipe理 – 也被其他系统使用。 ☑集中logging – 理智。 ☑转发代理 – 在同一url但不同path下绑定各个http可访问的服务。 ☐可能的其他服务或服务集合。 解决scheme? 所有在我自己的机器上? 在地狱里没有办法。 所有在虚拟机上? 也许,但是安全方面,如果这个设置应该反映prod.env。和prod.env。 就是这样,好吧..如果违反,这可能不是一个好主意。 除以责任,并在多个虚拟机上设置它们? 谁来pipe理所有这些机器? 我认为可以做得比这更好。 使用像Docker这样的容器,或者自己一起打巴掌? 听起来不错:(可能:)非常快的迭代周期,关注点分离,一些分离的安全性,以及容易的重现性。 为了简单起见,假设我们select的集装箱化工具是Docker,而且我们不打算使用libvirt / lxc工具/直接内核调用来构build自己的工具。 所以Docker可能是CoreOS或者Project Atomic。 所以现在有一个应用程序(或多个应用程序)的容器已经与系统的其他部分分离,并且可以在任何地方几乎相同。 解决scheme1:生产环境漂亮,优雅。 问题1:这不是开发环境。 开发环境 不pipe怎样select不把生产环境洒到我自己的机器上,问题依旧: 即使生产环境设置正确,我也必须在某处进行编译和testing,然后才能部署(通过CI或其他方式进行另一轮testing)。 我如何解决这个问题? 实际上,解决这个问题的正确方法是通过在自己的机器上编写代码,使其在虚拟镜像生产环境中同步/直接可见,从而自动运行testing? 当我不想运行所有的testing时,会发生什么情况,但是现在只有我正在编写的部分呢? 每次都要编辑自动编译过程吗? 怎么样远程debugging,因为多个系统必须编排以正确的方式运行,debugging必须附加到其中一个程序之间。 更不要说“ 代码,testing ”周期的速度,这将是非常缓慢的。 这听起来像CI这样的helluvalot,但是多个开发人员不能全部使用相同的CI并修改它,所以他们可能必须在自己的机器上进行此设置。 我也在想,开发者可以使用一个完全虚拟化的操作系统,它包含了所有的开发工具,并且在生产环境中是镜像的,但是这会迫使老用户采用虚拟开发环境的工具,听起来这个好主意。

使用Docker的Mac和CentOS开发环境设置

我查了一下历史,但没有find一个好的答案。 所以我只是在这里问我的问题。 如果已经有一个很好的答案,请给我redirect。 谢谢。 问题是,我发现我公司的新雇员文件列出了安装开发环境的一堆软件。 通常需要1到2天的时间才能安装新的Mac。 我们想缩短这个过程。 我首先想到的是Docker。 我阅读了Docker的用户指南,并关注了如何使用Docker设置开发环境的博客,但如果Docker适用于我们的设置,还是有点困惑。 所以这里是要求的细节: 我们需要安装一堆软件(其中许多是自定义的二进制文件)。 现在,我们分发源代码,从源代码构build新的雇佣需求,安装它并设置环境以将二进制文件包含到path中。 我想知道是否Docker允许我们将自定义的二进制文件安装到它的容器中? 源代码不应该留在容器中。 源代码仍然使用git在本地机器中检出。 那么,我怎样才能依靠Docker容器的环境来构build我的软件呢? 我已经search了一点,你需要将你的文件夹装入容器,然后shell进入你的容器来构build? 这是如何工作的? 我们通常在mac中开发,Docker是否也支持mac容器,或者它只是允许你使用boot2Docker来运行Linux容器? 提前感谢您的帮助。