mkdir -p /usr/local/jenkins
chmod -R 777 /usr/local/jenkins
jenkins绑定宿主机java、maven
version: "3.6"
services:
jenkins:
image: jenkins/jenkins
ports:
- "8080:8080"
- "50000:50000"
volumes:
- /usr/local/apache-maven-3.5.3:/usr/local/apache-maven-3.5.3
- /usr/local/jdk1.8.0_171:/usr/local/jdk1.8.0_171
- /usr/local/jenkins:/var/jenkins_home
- /etc/localtime:/etc/localtime
- /etc/docker:/etc/docker
networks:
- platform
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
platform:
external: true
docker stack deploy -c docker-jenkins.yml jenkins
浏览器访问:http://宿主机:8080,密码文件位置/var/jenkins_home/secrets/initialAdminPassword
查看docker 容器 id
docker ps
1d843e64ae41 jenkins/jenkins:latest jenkins_jenkins.1.ow18l7i39zwhriossu5gibfq9
查询密码文件内容
docker exec -it 1d843e64ae41 cat /var/jenkins_home/secrets/initialAdminPassword
密码
f164a3a0f5134def9f7c4cdb6b453d01
输入密码登录jenkins
Manage Jenkins->Global Tool Configuration
新增jdk,取消勾选自定安装,配置jdk的路径
配置maven
配置docker
Manage Jenkins->Manage Plugins
安装CloudBees Docker Build and Publish
安装Publish Over SSH插件
编辑docker的宿主机文件/lib/systemd/system/docker.service
vi /lib/systemd/system/docker.service
修改以ExecStart开头的行,修改为下面内容
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
修改后保存文件,然后通知docker服务做出的修改
systemctl daemon-reload
重启docker服务
service docker restart
接下来测试一下看是否能连接到docker api
curl http://localhost:2375/version
Manage Jenkins->Configure System–>云
分布式部署apollo,将apollo注册到统一eureka上,参考apollo分布式部署指南
eureka application.yml
server:
port: 9998
spring:
application:
name: eureka-server
profiles:
active: ${EUREKA_NAME}
eureka:
client:
fetchRegistry: true
registerWithEureka: true
registryFetchIntervalSeconds: 30
serviceUrl:
defaultZone: ${EUREKA_SERVER_LIST}
instance:
health-check-url-path: /actuator/health
hostname: ${EUREKA_NAME}
instanceId: ${spring.cloud.client.ip-address}:${server.port}
preferIpAddress: false
eureka docker swarm配置
version: "3.6"
services:
eureka1:
image: 192.168.8.98:5000/eureka:2.0
ports:
- 9997:9998
environment:
- EUREKA_SERVER_LIST=http://eureka2:9998/eureka/
- EUREKA_NAME=eureka1
extra_hosts:
- "eureka1:192.168.8.88"
- "eureka2:192.168.8.98"
networks:
platform:
aliases:
- eureka
deploy:
replicas: 1
placement:
constraints: [node.labels.host == ljh1]
eureka2:
image: 192.168.8.98:5000/eureka:2.0
ports:
- 9998:9998
environment:
- EUREKA_SERVER_LIST=http://eureka1:9997/eureka/
- EUREKA_NAME=eureka2
extra_hosts:
- "eureka1:192.168.8.88"
- "eureka2:192.168.8.98"
networks:
platform:
aliases:
- eureka
deploy:
replicas: 1
placement:
constraints: [node.labels.host == ljh2]
networks:
platform:
external: true
修改ApolloConfigDB 数据库 ServerConfig 表
将 eureka.service.url 改为 http://eureka1:9997/eureka/,http://eureka2:9998/eureka/
点击->添加构建步骤->执行shell
点击->添加构建步骤->Build/Publish Docker Image
点击->添加构建步骤->Build/Publish Docker Image
点击->添加构建步骤->Build/Publish Docker Image
apollo docker swarm配置
version: "3.4"
services:
apollo-configservice:
image: 192.168.8.98:5000/apollo-configservice:1.4
ports:
- "7080:7080"
networks:
- platform
volumes:
- /opt/logs:/opt/logs
extra_hosts:
- "eureka1:192.168.8.88"
- "eureka2:192.168.8.98"
deploy:
replicas: 1
placement:
constraints: [node.labels.host == ljh2]
apollo-adminservice:
image: 192.168.8.98:5000/apollo-adminservice:1.4
ports:
- "7090:7090"
networks:
- platform
volumes:
- /opt/logs:/opt/logs
extra_hosts:
- "eureka1:192.168.8.88"
- "eureka2:192.168.8.98"
deploy:
replicas: 1
placement:
constraints: [node.labels.host == ljh2]
depends_on:
- apollo-configservice
apollo-portal:
image: 192.168.8.98:5000/apollo-portal:1.4
ports:
- "7070:7070"
networks:
- platform
extra_hosts:
- "eureka1:192.168.8.88"
- "eureka2:192.168.8.98"
volumes:
- /opt/logs:/opt/logs
deploy:
replicas: 1
placement:
constraints: [node.labels.host == ljh2]
depends_on:
- apollo-adminservice
networks:
platform:
external: true