我想使用应用程序创建者提供的 docker-compose 文件在生产环境(单主机)中部署 docker 应用程序。基于 docker 的解决方案被用作整体二进制安装程序的直接替代品。
该应用程序附带默认配置,但期望管理员希望应用适度的配置更改。
似乎有几种方法可以将自定义配置应用于文件中定义的服务docker-compose.yml,但我不确定哪种方法被认为是最佳实践。我目前正在考虑的两个是:
将配置烘焙到新映像中。在这里,我将为 docker-compose 文件中定义的每个服务添加一个构建步骤,并创建一个最小的构建步骤Dockerfile,用于COPY将映像中的现有配置文件替换为我的自定义配置文件。使用sedand echoinCMD语句也可用于更改内联配置,而无需批量替换文件。
使用绑定安装并将配置存储在主机上。在这种情况下,我会将所有自定义配置文件存储在主机上的一个目录中,并在volumesdocker-compose 文件中的每个服务的参数中定义绑定安装。
第一个选项对我来说似乎是最干净的,因为应用程序是完全独立的,但是如果我想进行任何进一步的配置更改,我需要重建图像。第二个选项似乎是最简单的,因为我可以即时进行配置更改(根据容器中的需要重新启动服务)。
是否有推荐的方法将自定义配置注入 Docker 服务?
如果我有一个函数或方法接受一个只能是两个值之一的参数,那么在else子句中明确地陈述两个已知条件或抽象一个是否更加pythonic?例如:
选项1:
def main(group_name):
if group_name == 'request':
do_something()
else:
do_something_else()
Run Code Online (Sandbox Code Playgroud)
或选项2:
def main(group_name):
if group_name == 'request':
do_something()
elif group_name == 'response':
do_something_else()
else:
raise Exception
Run Code Online (Sandbox Code Playgroud) 我有一个相当大的文本文件(~16k行)我循环并为每一行,检查客户端IP:端口,服务器IP:端口和关键字是否存在于行中,使用两个for循环和嵌套if x in line语句来检查如果该行包含我正在寻找的信息.
在我确定了包含我要查找的值的行之后,我更新了一个sqlite数据库.最初,这需要相当长的时间来执行,因为我没有在手动事务中包装的SQL UPDATE语句.进行此更改后,执行时间显着改善,但我仍然发现下面的代码需要几分钟才能完成,我觉得我的可怕循环结构是原因.
如果有人有任何性能提示来帮助加快下面的代码,我将非常感激:
c.execute("SELECT client_tuple, origin_tuple FROM connections")
# returns ~ 8k rows each with two items, clientIP:port and serverIP:port
tuples = c.fetchall()
with open('connection_details.txt', 'r') as f:
c.execute('BEGIN TRANSACTION')
# for each line in ~16k lines
for line in f:
# for each row returned from sql query
for tuple in tuples:
# if the client tuple (IP:Port) is in the line
if tuple[0] in line:
# if the origin tuple (IP:Port) is …Run Code Online (Sandbox Code Playgroud)