我有一个开发环境,我正在dockerizing,我希望能够livereload我的更改,而不必重建docker映像。我使用docker compose,因为redis是我的应用程序的依赖项之一,我希望能够链接redis容器
我在docker-compose.yml
中定义了两个容器:
node:
build: ./node
links:
- redis
ports:
- "8080"
env_file:
- node-app.env
redis:
image: redis
ports:
- "6379"
我已经在我的node
应用程序的dockerfile中添加了一个卷,但是我如何在卷中挂载主机的目录,以便我对代码的所有实时编辑都反映在容器中呢?
以下是我当前的Dockerfile:
# Set the base image to Ubuntu
FROM node:boron
# File Author / Maintainer
MAINTAINER Amin Shah Gilani <amin@gilani.me>
# Install nodemon
RUN npm install -g nodemon
# Add a /app volume
VOLUME ["/app"]
# TODO: link the current . to /app
# Define working directory
WORKDIR /app
# Run npm install
RUN npm install
# Expose port
EXPOSE 8080
# Run app using nodemon
CMD ["nodemon", "/app/app.js"]
我的项目如下所示:
/
- docker-compose.yml
- node-app.env
- node/
- app.js
- Dockerfile.js
8条答案
按热度按时间ippsafx71#
查看他们的文档
从外观上看,您可以在docker-compose.yml上执行以下操作
其中
./
是主机目录,/app
是容器的目标目录。编辑:
以前的文档源现在指向版本历史,您必须选择正在使用的compose版本并查找参考。
对于懒惰者- v3 / v2 / v1
附注:截至本次编辑,所有版本的语法保持不变
zour9fqk2#
有几个选项
简短语法
使用
host : guest
,您可以执行下列任一操作:长语法
从docker-compose v3.2开始,您可以使用长语法,该语法允许配置可以用短格式表示的附加字段,如
mount type
(volume、bind或tmpfs)和read_only
。有关https://docs.docker.com/compose/compose-file/#long-syntax-3详细信息,请访问www.example.com。
ovfsdjhp3#
如果要将特定主机目录(以下示例中为
/disk1/prometheus-data
)作为卷装载到Docker合成YAML文件的volumes
部分中,可以执行以下操作,例如:顺便说一句,在prometheus的Dockerfile中,您可能会发现
VOLUME
指令如下所示,该指令将其标记为持有来自本机主机的外部挂载卷等。(但请注意:但将卷装入容器时,不一定要使用此说明。):停靠文件
参考文献:
vjhs03f74#
有两件事:
我在
docker-compose.yml
中添加了卷:我将
npm install && nodemon app.js
片段移到CMD
中,因为RUN
会向联合文件系统添加内容,而我的卷不是UFS的一部分。falq053o5#
我们必须创建您自己的docker卷与主机目录Map,然后才能在docker-compose.yml中将作为外部
1.创建名为***share***的卷
2.在您的Docker-Composer中使用它
这样,我们就可以与运行在不同容器中的许多服务共享同一目录
cu6pst1q6#
在docker-compose.yml中,您可以使用以下格式:
根据他们的文件
qyyhg6bp7#
下面是我的Node.js应用程序和MongoDB数据库的工作示例:
停靠-撰写.yml
停靠文件
but5z9lq8#
分享红色golang
docker-compose.yaml