【发布时间】:2021-09-07 10:27:23
【问题描述】:
我正在尝试在 Jenkinsfile 中克隆我所有的 git 存储库:
stage('Clone git') {
steps {sh 'mkdir repo1'
sh 'cd repo1'
dir ('repo1') {
git ([url : 'https://github.../repo1.git', branch : 'develop', credentialsId : '***'])}
sh 'mkdir repo2'
sh 'cd repo2'
dir ('repo2') {
git ([url : 'https://github.../repo2.git', branch : 'develop', credentialsId : '***'])}
}
}
stage('Build Docker') {
steps {sh 'cd ..'
sh 'docker build -t myimage .'
sh 'docker run myimage'
}
然后在我的 Dockerfile 中我有这个:
FROM node:12.2.0-alpine
COPY . /myapp
WORKDIR /myapp
RUN apk update
FROM gradle:6.3-jdk11 AS build
COPY --chown=gradle:gradle . /repo1
WORKDIR /repo1
RUN gradle build --no-daemon
WORKDIR /repo2
RUN npm install
RUN ng serve
请帮助我理解,如果我以正确的方式进行操作,特别是 COPY 命令。
我认为,它是这样工作的:首先它将 git repos 克隆到 repo1 和 repo2 文件夹。
然后在 Dockerfile 中它会在 myapp 文件夹中创建一个布局,它会复制 myapp 文件夹下的两个 repo 文件夹。
问题是,我需要同时运行这两个服务 - 在 repo1 中它是后端,需要构建 gradle,这就是为什么我将 gradle 复制到 repo1 文件夹,不确定是否应该在 COPY 中使用 myapp/repo1。
而repo2是前端,我认为不需要复制任何东西,只需选择WORKDIR repo2并运行服务器即可。
所以问题是,COPY 是否足够。 /myapp 在第一步中,它会复制那里的每个 repo 文件夹,还是只是将 docker 映像复制到 myapp 文件夹,我需要单独复制所有创建的文件夹?
【问题讨论】:
标签: docker jenkins dockerfile