引言:一般本地开发完的功能,上传到dev环境,很多时候,本地没有问题,上了linux就各种问题。如何将dev环境的请求指向本地,在本地观察数据变化,可以快速定位问题。
项目部署环境
gitlab cicd、docker
项目配置变更
.gitlab-ci 文件
variables:
GIT_STRATEGY: fetch
project_name: "online-taxi"
service_name: "order-service"
port: 9050
debug_port: 9051
stages:
- build
- deploy
############################## HW DEV ENV ##############################
dev-hw:build:
tags:
- dev-hw
stage: build
script:
- echo -e "\n[$CI_JOB_NAME] $(date) ($CI_BUILD_REF_NAME) ($CI_BUILD_STAGE)\n" | tee -a /tmp/test.txt
- mvn clean package
- sh scripts/clean-image.sh $service_name latest
- docker build -f Dockerfile -t $service_name:latest .
when:
manual
dev-hw:deploy:
tags:
- dev-hw
stage: deploy
needs: [ "dev-hw:build" ]
script:
- echo -e "\n[$CI_JOB_NAME] $(date) ($CI_BUILD_REF_NAME) ($CI_BUILD_STAGE)\n" | tee -a /tmp/test.txt
- sh scripts/clean-container.sh $service_name
- docker create -m 1G --name $service_name -p $port:$port -p $debug_port:5005 -e "SPRING_PROFILES_ACTIVE=dev-hw" -v /var/log/$project_name:/var/log/$project_name $service_name:latest
- docker start $service_name
when:
manual
主要增加这两行
debug_port: 9051
-p $debug_port:5005
目的:将容器5005端口指向宿主机9051
Dockerfile 增加配置
FROM openjdk:8-jdk-alpine
VOLUME /tmp
VOLUME /var/log/online-taxi
ADD target/order-service.jar order-service.jar
EXPOSE 9050
ENV TZ Asia/Shanghai
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add tzdata ttf-dejavu fontconfig \
&& cp /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo ${TZ} > /etc/timezone \
&& apk del tzdata
ENTRYPOINT ["java", "-Xdebug", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/order-service.jar"]
主要增加
“-Xdebug”, “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”,
然后重新部署dev环境
idea配置
post请求dev环境接口,本地可收到请求。前提:其他人没有在调用这个接口;本地与线上 代码、环境都是一致的