我正在使用 docker-compose 在这里构建我的 jenkins 容器,但我无法将 2 个命名卷安装到 1 个容器上。这是我所拥有的:
docker-compose.yml:
version: '2'
networks:
nw:
driver: bridge
volumes:
jenkins-ansible:
jenkins-data:
services:
jenkins:
image: jenkins
ports:
- "801:8080"
volumes:
- jenkins-ansible:/var/lib/ansible
- jenkins-data:/var/jenkins_home
networks:
- nw
Run Code Online (Sandbox Code Playgroud)
我运行docker-compose up -d并且容器启动正常,但是当我 BASH 进入容器时,df -h只显示一个挂载,/var/jenkins_home。
如果我注释掉该-jenkins-data:/var/jenkins_home行,它将安装 ansible 卷。
那么为什么它只挂载一个卷呢?我找不到任何关于只允许为每个容器安装一个卷的内容,但这就是它的外观。
jenkins-data 挂载有什么特别之处,以至于它优先于 jenkins-ansible 挂载?(我试过交换 2 条安装线,没有变化)
提前致谢,
吉姆
我在Kotlin中有一个数据类:
data class Image (val name: String, val url: URL) {}
Run Code Online (Sandbox Code Playgroud)
我想通过REST(Spring Boot,JPA)提供这些图像的列表,但我只希望提供某些属性(在本示例中仅是名称,而不是URL)。从我阅读的内容中,我需要使用投影-仅使用'getName'函数定义接口:
interface HasName {
fun getName () : String
}
Run Code Online (Sandbox Code Playgroud)
..然后设置数据类以实现此目的,并让RestController服务于HasNames而不是Images:
@GetMapping("/images")
fun getImages () : List <HasName> {
return imageService.getImages()
}
Run Code Online (Sandbox Code Playgroud)
(或者那就是我在Java中要做的事情)。
但是,如果我在Kotlin中这样做:
data class Image (val name: String, val url: URL) : HasName {}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
意外覆盖:以下声明具有相同的JVM签名(getUrl()Ljava / net / URL;):
公共最终乐趣
<get-url>():在com.figmentsignage.server.data.campaign.Image中定义的URL公共抽象乐趣getUrl():在com.figmentsignage.server.data.campaign.Image中定义的URL
有没有解决此问题的简单方法?我可以给该方法一个不同的名称,然后在Image类中重新定义它,但这有点混乱。或者,我可以在界面中定义'name'变量,然后在Image中覆盖它,这又很麻烦。理想情况下,我希望尽可能少地更改Image类。