我是一名 Web 全栈开发人员。作为我工作的一部分,有时我需要管理开发和生产服务器。
我希望生产服务器和开发服务器的包和配置尽可能完全相同。
所以基本上,我希望在需要时拥有旧服务器的精确副本。
我不想使用磁盘映像,因为我无法在云提供商之间传输磁盘映像。(有时我需要它)
为了满足我的需求,我使用了一个安装特定版本软件包的 shell 脚本。例如:
aptitude install -y apache2=2.4.18-2ubuntu3.1
aptitude install -y libapache2-mod-ruid2=0.9.8-3
... and so on
所以我想知道……
- 这是一个好方法吗?
- 还有更好的解决办法吗?
- 软件包的特定版本在存储库中托管了多长时间?
答案1
@kormoc 以你写的方式回答了你的问题。但你用 docker 标记了它,虽然你的问题不直接涉及 docker,但我将给出解决这个问题的 docker 方法:
您想要的是从开发到生产都拥有相同的环境,而不是相同的软件包,这只是解决问题的一种方法。
不管您的服务器上安装了什么,Docker 都允许您将运行所需的所有内容打包到您的应用程序中。
你可以在 Dockerfile 中写下你需要的每个包:
FROM ubuntu:trusty
RUN aptitude install -y apache2=2.4.18-2ubuntu3.1
RUN aptitude install -y libapache2-mod-ruid2=0.9.8-3
... 等等
然后你从中创建一个镜像并在你想要的服务器中运行这个镜像。唯一的要求是安装docker。
问候