问题描述
正在使用docker-compose来管理Docker容器。现在假设他想要更新一个Docker容器中的源代码。他想知道是否可以使用exec命令来实现,但是如何将代码从主机复制到运行中的容器中呢?或者是否有更好的解决方案来完成上述任务?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据最佳回答,直接在运行中的容器中更新代码是一个不好的做法。更好的做法是使用持续集成(Continuous Integration)来在源代码更改时重新构建Docker镜像(参见Dockerfile)。
以下是一些适合此任务的持续集成/持续交付(CI/CD)库或软件:
1. Drone CI
2. Jenkins
3. Travis CI
你可以选择其中一个工具来设置持续集成流程,以便在源代码更改时自动重新构建Docker镜像。
方案2
如果只是为了验证如何在运行中的容器中更新代码,可以使用docker cp
命令从主机机器复制代码到容器中。但是,根据最佳回答,这也是一个不好的做法。因为你希望能够回滚到先前版本的代码和容器。
以下是一个集成Docker/DockerHub与Github、Jenkins甚至Sonarqube的非常好的教程:
https://medium.com/@hakdogan/an-end-to-end-tutorial-to-continuous-integration-and-continuous-delivery-by-dockerize-jenkins-f5b9b45b610d
这个教程将指导你如何使用Jenkins和Docker来实现持续集成和持续交付流程,以及如何与Github、DockerHub和Sonarqube集成。这将为你提供更好的方式来管理代码更新和Docker容器的构建过程。