并行Docker上下文是否可行?
我们如何使用不是当前目录子目录的项目和路径来引入docker服务并构建容器 例如:并行Docker上下文是否可行?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我们如何使用不是当前目录子目录的项目和路径来引入docker服务并构建容器 例如: / application-a <- needs api01 & api03 (not api02) - .git - docker-compose.yml / src / application-a <- needs api01 & api02 (not api03) - .git - docker-compose.yml / src / a
/ application-a <- needs api01 & api03 (not api02)
- .git
- docker-compose.yml
/ src
/ application-a <- needs api01 & api02 (not api03)
- .git
- docker-compose.yml
/ src
/ api01
- .git
- Dockerfile
/ src
/ api02
- .git
- Dockerfile
/ src
/ api03
- .git
- Dockerfile
/ src
提前谢谢。看起来像是将目录名添加到
上下文:
和卷:
路径将解决以下问题:
version: '2'
services:
api01:
build:
context: ../app01
container_name: api01
command:
bash -c "npm install && nodemon"
volumes:
- ../app01/src:/var/www
working_dir: /var/www
ports:
- "3000"
networks:
- backend
将目录名添加到
上下文:
和卷:
路径将解决此问题:
version: '2'
services:
api01:
build:
context: ../app01
container_name: api01
command:
bash -c "npm install && nodemon"
volumes:
- ../app01/src:/var/www
working_dir: /var/www
ports:
- "3000"
networks:
- backend
我建议采取稍微不同的方法。我使用元存储库—基本上是包含其他存储库的外部存储库 以下是几个实现: 您可以有多个元存储库,其中包含子repo的不同子集。如果它们重叠就可以了。在meta repo的内部将是放置docker撰写文件的完美场所 开发人员的工作流程如下所示:
meta git clone git@github.com:yourOrg/project-name.git
cd project-name
docker-compose up
docker-compose.yml文件的位置如下所示:
version: "2"
networks:
service:
site:
services:
rabbitmq:
image: rabbitmq
hostname: rabbitmq
networks:
- service
redis:
image: redis
networks:
- service
mongo:
image: mongo
networks:
- site
site:
build: ./nycnode-site
ports:
- "3000:3000"
volumes:
- ./nycnode-site:/home/app/site
- /home/app/site/node_modules
environment:
- MONGO_URI=mongodb://mongo:27017/nycnode
- NODE_ENV=development
networks:
- site
meetup-ingestor:
build: ./nycnode-meetup-ingestor
volumes:
- ./nycnode-meetup-ingestor:/home/app/meetup-ingestor
- /home/app/meetup-ingestor/node_modules
environment:
- RABBITMQ_URL=amqp://rabbitmq:5672
- REDIS.HOST=redis
- NODE_ENV=development
networks:
- service
user-ingestor:
build: ./nycnode-user-ingestor
volumes:
- ./nycnode-user-ingestor:/home/app/user-ingestor
- /home/app/user-ingestor/node_modules
environment:
- RABBITMQ_URL=amqp://rabbitmq:5672
- REDIS.HOST=redis
- NODE_ENV=development
networks:
- service
youtube-ingestor:
build: ./nycnode-youtube-ingestor
volumes:
- ./nycnode-youtube-ingestor:/home/app/youtube-ingestor
- /home/app/youtube-ingestor/node_modules
environment:
- RABBITMQ_URL=amqp://rabbitmq:5672
- REDIS.HOST=redis
- NODE_ENV=development
networks:
- service
denormalizer:
build: ./nycnode-denormalizer
volumes:
- ./nycnode-denormalizer:/home/app/denormalizer
- /home/app/denormalizer/node_modules
ports:
- "3001:3001"
environment:
- RABBITMQ_URL=amqp://rabbitmq:5672
- REDIS.HOST=redis
- MONGO_URL=mongodb://mongo:27017/nycnode
- NODE_ENV=development
networks:
- service
- site
此外,没有什么可以阻止您拥有多个docker-compose.yml文件
您可以指定要与-f
标志一起使用的选项
docker-compose -f docker-compose-subset-A.yml up
我建议采取稍微不同的方法。我使用元存储库—基本上是包含其他存储库的外部存储库 以下是几个实现: 您可以有多个元存储库,其中包含子repo的不同子集。如果它们重叠就可以了。在meta repo的内部将是放置docker撰写文件的完美场所 开发人员的工作流程如下所示:
meta git clone git@github.com:yourOrg/project-name.git
cd project-name
docker-compose up
docker-compose.yml文件的位置如下所示:
version: "2"
networks:
service:
site:
services:
rabbitmq:
image: rabbitmq
hostname: rabbitmq
networks:
- service
redis:
image: redis
networks:
- service
mongo:
image: mongo
networks:
- site
site:
build: ./nycnode-site
ports:
- "3000:3000"
volumes:
- ./nycnode-site:/home/app/site
- /home/app/site/node_modules
environment:
- MONGO_URI=mongodb://mongo:27017/nycnode
- NODE_ENV=development
networks:
- site
meetup-ingestor:
build: ./nycnode-meetup-ingestor
volumes:
- ./nycnode-meetup-ingestor:/home/app/meetup-ingestor
- /home/app/meetup-ingestor/node_modules
environment:
- RABBITMQ_URL=amqp://rabbitmq:5672
- REDIS.HOST=redis
- NODE_ENV=development
networks:
- service
user-ingestor:
build: ./nycnode-user-ingestor
volumes:
- ./nycnode-user-ingestor:/home/app/user-ingestor
- /home/app/user-ingestor/node_modules
environment:
- RABBITMQ_URL=amqp://rabbitmq:5672
- REDIS.HOST=redis
- NODE_ENV=development
networks:
- service
youtube-ingestor:
build: ./nycnode-youtube-ingestor
volumes:
- ./nycnode-youtube-ingestor:/home/app/youtube-ingestor
- /home/app/youtube-ingestor/node_modules
environment:
- RABBITMQ_URL=amqp://rabbitmq:5672
- REDIS.HOST=redis
- NODE_ENV=development
networks:
- service
denormalizer:
build: ./nycnode-denormalizer
volumes:
- ./nycnode-denormalizer:/home/app/denormalizer
- /home/app/denormalizer/node_modules
ports:
- "3001:3001"
environment:
- RABBITMQ_URL=amqp://rabbitmq:5672
- REDIS.HOST=redis
- MONGO_URL=mongodb://mongo:27017/nycnode
- NODE_ENV=development
networks:
- service
- site
此外,没有什么可以阻止您拥有多个docker-compose.yml文件
您可以指定要与-f
标志一起使用的选项
docker-compose -f docker-compose-subset-A.yml up