我正在使用VSCode中的远程容器扩展来处理我的docker容器。虽然我可以远程连接到我的客户端容器,但git历史记录显示大部分文件都被修改或删除了。我该如何保持git与我的本地项目结构同步?
我的本地设置如下所示,
- app
- client
- .devcontainer
- Dockerfile
- server
- .devcontainer
- Dockerfile
- docker-compose.yml
我的docker-compose.yml
version: '3'
services:
server:
build: ./server
volumes:
- ~/.ssh:/root/.ssh
- ./server/src:/app/src
- api-modules:/app/node_modules
client:
build: ./client
depends_on:
- server
volumes:
- ~/.ssh:/root/.ssh
- ./.git:/app/.git
- web-modules:/app/node_modules
- ./client/src:/app/src
- ./client/public:/app/public
volumes:
api-modules:
web-modules:
客户端停靠文件
FROM node:10
COPY . /app/
WORKDIR /app
ENTRYPOINT yarn start;
2条答案
按热度按时间gz5pxeao1#
我想想,现在...
/app
复制到容器中(使用相同路径)。./.git
作为卷装载到/app/.git
中这意味着
/app
处于上次创建容器时本地目录所处的状态。而
/app/.git
反映的是您当前的本地状态(因为它是从您的本地./.git
读取的已挂载卷)。这就是为什么容器中的
git
会看到工作目录的不同,因为它的内容没有处于git
期望的状态(基于存储在.git
中的git历史/状态)。解决方案:
无论何时更改代码(以更新
/app/
),都可以从docker-compose.yml
中删除/app/.git
卷并重新创建容器。或者将
./
作为卷挂载到容器中的/app/
(而不仅仅是subdir. git),* 而不是 * 在Docker文件中复制/app
。kmpatx3s2#
在docker-compose文件中,您可以创建卷client_path并将其装载到/app
示例: