我是Docker的新手,我创建了一个Docker-compose文件来从一个文件设置我的nodejs开发环境。我的想法是给予开发人员一个Docker-compose文件,他们可以从那里简单地启动容器并开始开发。
当我使用docker-compose up
时,应用程序已经成功构建并运行,但问题是当我在Vscode的开发容器中打开它时,它无法识别为git repo。
.停靠忽略
node_modules
npm-debug.log
停靠文件
FROM node:16.15.0 as develop-stage
WORKDIR /code
COPY package.json .
# Using package-lock file to fix the version of installed modules.
COPY package-lock.json .
RUN npm install
COPY . .
EXPOSE 9608
CMD ['nodemon' 'index.js']
对接合成
version: '3.8'
services:
my-service:
container_name: my-service
build:
context: 'https://username:token@bitbucket.org/abc/test-repo'
dockerfile: Dockerfile
volumes:
- my-data:/code
command: nodemon index.js
networks:
- my-network
expose:
- 9608
ports:
- 9608:9608
restart: on-failure
volumes:
my-data:
external: false
networks:
my-network:
external: false
2条答案
按热度按时间juud5qan1#
Docker-compose上下文定义了一个build context,它可以使用Git存储库URL
当URL参数指向Git存储库的位置时,存储库将充当构建上下文。
构建器递归地拉取仓库及其子模块,执行一个浅克隆,因此只拉取最近的提交,而不是整个历史。
首先将资料档案库提取到主机上的临时目录中。成功后,该目录将作为上下文发送到守护进程。
换句话说,你的上下文代表了远程Git仓库的内容,它并不代表一个实际的(克隆的)Git仓库。
如果你必须在你的映像中得到一个存储库,你的Dockerfile/docker-compose将 * 克隆 * Git存储库,而不使用上下文。
gajydyqb2#
你的
.git
文件夹不在要复制到Docker映像的根目录中。根据你的文件夹结构设置,它可能是一个或两个以上的文件夹。你可以通过cd .. && ls -a
找到它,直到找到为止。然后使用显式COPY ../.git .
将它添加到Docker映像中。