docker 运行 没有主机卷的本地脚本
docker run local script without host volumes
目标是在数据库容器 运行ning 后使用 curl 从下载中将数据添加到我的多容器 Web 应用程序的数据库服务器容器中。只要我使用主机卷,我就可以独立于 Web 应用程序从 docker-compose.yml 或 docker 运行 执行此操作。
如何在不使用主机卷或 Web 应用特定 Docker 文件的情况下执行此操作?
Docker 使用主机卷组成示例:
dbinit:
build: ./webtools_config/initdb
command: bash -c "/tmp/webtools_config/dbinit.sh"
volumes:
- ./webtools_config:/tmp/webtools_config
links:
- db1
- db2
docker 运行 的示例,我想将 本地脚本文件传递给 docker 客户端 ,例如 . /dbinit.sh:
docker run -a stdin -a stdout -i -t \
--link dir_db1_1:db1 \
--link dir_db2_1:db2 \
initdb /bin/sh -c "./dbinit.sh"
如果我理解正确,您可以使用此脚本消除 通过构建 图像链接主机卷。
您的 Dockerfile:
# Dockerfile
...
ADD your-script-on-host.sh /app/your-script-in-container.sh
RUN /app/your-script-in-container.sh
# Your CMD here
请注意,只有在构建图像时,您才能更新和运行此脚本。
我找到的解决方案是:
docker run tomdavidson/initdb bash -c "`cat initdb.sh`"
和
设置一个等于你的脚本的 ENV VAR,并将你的 Docker 图像设置为 运行 脚本(当然可以 ADD/COPY 并使用主机卷,但那不是这个问题),例如:
docker run -d -e ADD_INIT_SCRIPT="`cat custom-script.sh`" tomdavidson/debian
tomdavidson/debian 的 CMD 运行 是一个脚本:
if [ "${ADD_INIT_SCRIPT}" != "**None**" ]; then
echo "Executing ADD_INIT_SCRIPT ..."
bash -c "${ADD_INIT_SCRIPT}"
fi
目标是在数据库容器 运行ning 后使用 curl 从下载中将数据添加到我的多容器 Web 应用程序的数据库服务器容器中。只要我使用主机卷,我就可以独立于 Web 应用程序从 docker-compose.yml 或 docker 运行 执行此操作。
如何在不使用主机卷或 Web 应用特定 Docker 文件的情况下执行此操作?
Docker 使用主机卷组成示例:
dbinit:
build: ./webtools_config/initdb
command: bash -c "/tmp/webtools_config/dbinit.sh"
volumes:
- ./webtools_config:/tmp/webtools_config
links:
- db1
- db2
docker 运行 的示例,我想将 本地脚本文件传递给 docker 客户端 ,例如 . /dbinit.sh:
docker run -a stdin -a stdout -i -t \
--link dir_db1_1:db1 \
--link dir_db2_1:db2 \
initdb /bin/sh -c "./dbinit.sh"
如果我理解正确,您可以使用此脚本消除 通过构建 图像链接主机卷。
您的 Dockerfile:
# Dockerfile
...
ADD your-script-on-host.sh /app/your-script-in-container.sh
RUN /app/your-script-in-container.sh
# Your CMD here
请注意,只有在构建图像时,您才能更新和运行此脚本。
我找到的解决方案是:
docker run tomdavidson/initdb bash -c "`cat initdb.sh`"
和
设置一个等于你的脚本的 ENV VAR,并将你的 Docker 图像设置为 运行 脚本(当然可以 ADD/COPY 并使用主机卷,但那不是这个问题),例如:
docker run -d -e ADD_INIT_SCRIPT="`cat custom-script.sh`" tomdavidson/debian
tomdavidson/debian 的 CMD 运行 是一个脚本:
if [ "${ADD_INIT_SCRIPT}" != "**None**" ]; then
echo "Executing ADD_INIT_SCRIPT ..."
bash -c "${ADD_INIT_SCRIPT}"
fi