postgresql - Dockerfile与Shell

标签 postgresql docker shell dockerfile

我正在尝试创建一个安装了sqlite和postgreSQL的ubuntu镜像。如果我正在做的是最佳做法,我会感到困惑。
我发现我可以构建一个非常简单的dockerfile并通过shell(使用docker run -it [image_name])安装sqlite和postgresql。
所以我会有一个像这样的dockerfile

FROM ubuntu:18.04
ENV TZ=[time zone data]
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
并运行docker build some_container:1.0 .然后运行docker run -it some_container:1.0,这将给我一个 shell ,然后在 shell 内运行诸如apt-get install postgres-12的安装命令。
这甚至是构建图像的正确方法吗?如果这是一个好方法,我会感到困惑,因为许多在线资料并不使用shell,而是使用dockerfile来指定要安装和运行的内容。
与通过shell编辑图像相比,使用dockerfile有什么好处?

最佳答案

退出正在运行的计算机后,它就消失了,您需要重新创建它。您手动输入的每个命令都消失了。 Dockerfile是从头开始可复制地创建镜像的秘诀。
从更大的 Angular 看:虚拟机很有用,我们可以同意吗?它们使您可以在简单的环境中运行复杂的服务,从而避免了可能希望并行运行的其他事物的复杂性。设置虚拟机可能会很麻烦。您需要启动计算机本身,然后登录到计算机以安装所需的所有东西。这可能是复杂且耗时的。
Docker简化了以已知的良好状态启动和运行虚拟机的过程:您可以在Dockerfile中定义确切地创建所需虚拟机所需的步骤,基本上就是这样。 Docker将构建一个机器并使用一个简单的命令运行它,它会高效地运行(具有层缓存和紧密的OS集成),而您所需的只是一个文本文件,您可以将其检入到版本控制系统中(相对于多GB的虚拟机镜像)。

关于postgresql - Dockerfile与Shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63718569/

相关文章:

sql - 对 postgresql 9.6 中的列集进行总和值分组

postgresql - PostgreSQL 中具有高精度和标度的 NUMERIC 类型的性能

docker - 无法使用 Aws ECS fargate 容器连接到 Aurora MySql

C:在C中执行和输出shell命令

c - 在C中运行程序后抓取在控制台中输入的文本

linux - 在 bash 脚本中从 grep 重新格式化名称/内容对

postgresql - 如何在 Postgres 同步复制中禁用未提交的读取?

ruby-on-rails - 索引同时未显示在 structure.sql 中

selenium - 用于Firefox的Docker设置语言的Selenium Grid

node.js - nestjs Docker构建错误: can not find tsconfig. build.json