FROM mcr.microsoft.com/java/jdk:11-zulu-alpine
RUN adduser --disabled-password --gecos '' xxx
USER xxx
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} /main/program/hxl-test/test.jar
ENTRYPOINT ["java","-jar","/main/program/hxl-test/test.jar"]
【踩坑:原来的spring-boot-maven-plugin不要移除,否则会启动找不到main文件】
com.spotify
dockerfile-maven-plugin
1.4.13
build
build
tag-latest
tag
latest
${docker.image.prefix}/${project.name} //设置镜像名
${project.version} //设置tag号
${project.basedir}/Dockerfile //指定Dockerfile路径,根据Dockerfile创建镜像
${docker.build.retry.count}
在项目根目录创建docker-compose文件夹,并创建编写docker-compose.yml
version: '1.0'
services:
redis:
image: redis:alpine
container_name: hxl_redis
ports:
- "12300:12300"
restart: always
command: redis-server --port 12300 --requirepass yourPwd #创建一个包含密码的redis容器
hxl-test:
image: hxl-test/testci:1.0.0
restart: always
entrypoint:
- java
- -XX:+UseShenandoahGC
- -Xms256m
- -XX:+UnlockExperimentalVMOptions
- -XX:ShenandoahUncommitDelay=1000
- -XX:ShenandoahGuaranteedGCInterval=10000
- -jar
- /main/program/hxl-test/test.jar
ports:
- "12400:12200" #前面的是对外开放的端口,后面的容器启动端口
volumes:
- /main/program/hxl-test/logs2:/main/program/hxl-test/logs #前面的是宿主机目录,后面的容器中的目录
depends_on:
- redis
这里的安装,均可参照docker官网以及gitlab-runner的官方文档:
docker:https://docs.docker.com/engine/install/centos/
docker-compose:https://docs.docker.com/compose/install/
gitlab-runner:https://docs.gitlab.com/runner/install/linux-manually.html
1.4.1. 安装Docker Engine - Community
检查docker是否安装以及版本
$ sudo docker version
1.4.2. 安装docker-compose
1.4.3. 安装Gitlab-runner
安装git maven
sudo yum install git maven
修改启动用户,文件:/etc/systemd/system/gitlab-runner.service。
1.4.4. 注册runner并编写.gitlab-ci.yml
【这里gitlab-runner方式选的shell方式即可】
1.4.5. 在项目根目录下创建编写 .gitlab-ci.yml
stages:
- build
- deploy-dev
build:
stage: build
tags:
- master
only:
refs:
- master
script:
- mvn clean package -Dmaven.test.skip=true
deploy-dev:
stage: deploy-dev
tags:
- master
only:
refs:
- master
script:
- sudo -u xxx whoami
- sudo -u xxx mkdir -p /main/program/hxl-test
- sudo -u xxx cp -r ./docker-compose/. /main/program/hxl-test #复制当前项目的docker-compose下的文件到/main/program/hxl-test目录,即docker-compose.yml文件
- cd /main/program/hxl-test
- sudo -u xxx sudo docker-compose up -d #启动容器
needs:
- job: build
百度说是git版本过低,但是同一个环境中另一个项目可成功运行,所以排除,最后发现修改项目的如下配置即可:
解决办法:在项目的设置中,找到流水线通用设置,从git fetch----》 git clone
解决办法:
镜像的tag没有对应上,项目中的docker-compose.yml中的镜像名为:
但是由于我在.gitlab-ci.yml中配置了这个命令,将会覆盖我在pom中设置的tag,采用maven自己创建的tag号,取消这行代码,再次上传,管道即可通过
解决办法:
查看容器的日志挂载信息:
docker inspect -f "{{.Mounts}}" 33ddaa88da36
[{bind /main/program/hxl-test/logs /main/program/hxl-test/logs rw true rprivate}]
//或者使用命令:
docker inspect hxl-test_hxl-test_1 | grep Mounts -A 10
"Mounts": [
{
"Type": "bind",
"Source": "/main/program/hxl-test/logs",
"Destination": "/main/program/hxl-test/logs",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
具体解决办法:
修改配置,日志输出文件为:
logging.file.name=/main/program/hxl-test/logs/hxl-test.log
修改挂载信息:
volumes:前面的是宿主机的路径,后面的是容器中的目录
ports:前面的是对外开放的端口,后面的是容器中的端口
volumes:
- /main/program/hxl-test/logs:/main/program/hxl-test/logs
最后重新运行,查看指定挂载目录的日志文件映射成功: