【发布时间】:2019-03-12 10:14:00
【问题描述】:
我想通过Dockerfile 或docker-compose.yml 使用touch 创建一个空的数据库文件并将其卷起来。实际上,我可以在容器中手动创建它,如下所示:
docker exec -it <container-name> bash
# touch /app/model/modbus.db
然而,当我使用以下过程时,它会抛出 exited with code 0 并停止:
version: '3'
services:
collector:
build: .
image: collector:2.0.0
command: bash -c "touch /app/model/modbus.db" # Note
# command: bash /app/bashes/create_an_empty_db.sh
volumes:
- "./model/modbus.db:/app/model/modbus.db:rw"
tty: true
除此之外,我还通过Dockerfile 尝试过,但也没有成功:
FROM python:3.6-slim
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /
ADD . /app
RUN touch /app/model/modbus.db # Note
CMD python app
[注意]:
在docker-compose.yml 中也没有command: bash -c "touch /app/model/modbus.db",这是exited with code 0 的原因;由于以下部分,将创建一个名为 modbus.db 的目录而不是文件:
volumes:
- "./model/modbus.db:/app/model/modbus.db:rw"
TL;DR:
如何将新文件从容器发送到主机中不存在的主机? (也就是说,它是在容器内完成的,而不是在宿主机内)
【问题讨论】:
标签: docker ubuntu docker-compose dockerfile