【发布时间】:2016-01-08 22:51:09
【问题描述】:
我正在尝试使用 2 个 Docker 容器设置原始 CI/CD 管道——我将它们称为 jenkins 和 node-app。我的目标是让 jenkins 容器在提交到 GitHub 存储库时运行作业(已完成)。该作业应该在 node-app 容器上运行 deploy.sh 脚本。因此,当开发人员向 GitHub 提交时,jenkins 会接收提交,然后开始一项工作,包括自动化测试(将来),然后在 node-app 上进行部署.
jenkins 容器正在使用最新的图像 (Dockerfile).
node-app 容器的 Dockerfile 是:
FROM node:latest
EXPOSE 80
WORKDIR /usr/src/final-exercise
ADD . /usr/src/final-exercise
RUN apt-get update -y
RUN apt-get install -y nodejs npm
RUN cd /src/final-exercise; npm install
CMD ["node", "/usr/src/final-exercise/app.js"]
jenkins 和 node-app 使用 Docker Compose 链接,docker-compose.yml 文件包含(更新,感谢@alkis):
node-app:
container_name: node-app
build: .
ports:
- 80:80
links:
- jenkins
jenkins:
container_name: jenkins
image: jenkins
ports:
- 8080:8080
volumes:
- /home/ec2-user/final-exercise:/var/jenkins
容器使用docker-compose up -d 构建并按预期启动。 docker ps 产量(更新):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69e52b216d48 finalexercise_node-app "node /usr/src/final-" 3 hours ago Up 3 hours 0.0.0.0:80->80/tcp node-app
5f7e779e5fbd jenkins "/bin/tini -- /usr/lo" 3 hours ago Up 3 hours 0.0.0.0:8080->8080/tcp, 50000/tcp jenkins
我可以从 node-app ping jenkins,反之亦然。
这甚至可能吗?如果不是,我是否在这里犯了架构错误?
非常感谢您,我很感激!
编辑:
我偶然发现了nsenter,并使用this 和this 轻松进入容器的外壳。但是,它们都假设源(在他们的情况下是主机,在我的情况下是 jenkins 容器)安装了 Docker,以便找到目标容器的 PID。我可以从主机 nsenter 进入 node-app,但仍然没有来自 jenkins 的运气。
【问题讨论】:
标签: jenkins docker continuous-integration docker-compose continuous-delivery