1、GitLab
version: '3'
services:
gitlab:
container_name: gitlab
image: 'twang2218/gitlab-ce-zh'
restart: always
hostname: '192.168.126.128'
environment:
TZ: 'Asia/Shanghi'
GITLAB_OMNIBUS_CONFIG:
external_url 'http://192.168.126.128'
ports:
- '80:80'
- '8443:443'
- '2222:22'
volumes:
- /usr/local/gitlab/config:/etc/gitlab
- /usr/local/gitlab/data:/var/opt/gitlab
- /usr/local/gitlab/logs:/var/log/gitlab
2、Nexus
version: '3'
services:
nexus:
container_name: nexus
image: 'sonatype/nexus3'
restart: always
ports:
- 8081:8081
volumes:
- /usr/local/nexus/data:/nexus-data
配置认证信息:
# 在Maven settings.xml中添加Nexus 认证信息(servers节点下):
<server>
<id>nexus</id>
<username>admin</username>
<password>admin</password>
</server>
配置自动化部署
# 在项目pom.xml中添加如下代码
<distributionManagement>
<repository>
# id要和上面认证信息配置的id相同
<id>nexus</id>
<name>Nexus Release Repository</name>
<url>http://192.168.126.128:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.126.128:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
配置代理仓库
# 在项目pom.xml中添加如下代码
<repositories>
<repository>
# id要和上面认证信息配置的id相同
<id>nexus</id>
<name>Nexus Respository</name>
<url>http://192.168.126.128:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enable>true</enable>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Respository</name>
<url>http://192.168.126.128:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enable>true</enable>
</releases>
</pluginRepository>
</pluginRepositories>
3、docker-registry
version: '3'
services:
registry:
container_name: registry
image: 'registry'
restart: always
ports:
- 5000:5000
volumes:
- /usr/local/registry/data:/var/lib/registry
# WEB UI
frontend:
image: 'konradkleine/docker-registry-frontend'
container_name: frontend
ports:
- 8080:80
volumes:
- ./certs/frontend.crt:/etc/apache2/server.crt:ro
- ./certs/frontend.key:/etc/apache2/server.ley.ro
environment:
- ENV_DOCKER_REGISTRY_HOST=192.168.126.128
- ENV_DOCKER_REGISTRY_PORT=5000
docker客户端拉取镜像配置:
# /etc/docker/daemon.json
{
"registry-mirrors": [
"https://5z8k6du2.mirror.aliyuncs.com"
],
"insecure-registries": [
ip:5000
]
}
上传镜像:
## 标记本地镜像并指向目标仓库(ip:port/image_name:tag)
docker tag registry 192.168.126.128:5000/registry
## 提交镜像
docker push 192.168.126.128:5000/registry
4、GitLab Runner
version: '3'
services:
gitlab-runer:
container_name: gitlab-runner
build: dockerfile
restart: always
privileged: true
volumes:
- /usr/local/gitlab-runner/config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
FROM gitlab/gitlab-runner:ubuntu-v11.1.0
MAINTAINER zengdw 309606298@qq.com
# 更换软件源
RUN echo deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse > /etc/apt/sources.list &&\
echo deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse >> /etc/apt/sources.list &&\
echo deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse >> /etc/apt/sources.list &&\
echo deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse >> /etc/apt/sources.list &&\
echo deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse >> /etc/apt/sources.list &&\
echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse >> /etc/apt/sources.list &&\
echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse >> /etc/apt/sources.list &&\
echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse >> /etc/apt/sources.list &&\
echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse >> /etc/apt/sources.list &&\
echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse >> /etc/apt/sources.list
# 安装docker
RUN apt-get update -y && \
apt-get -y install apt-transport-https ca-certificates curl software-properties-common -y && \
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial stable" && \
apt-get update -y && \
apt-get clean -y && \
apt-get -y install docker-ce -y
COPY daemon.json /etc/docker/daemon.json
# 安装docker-compose
COPY docker-compose /usr/local/bin/docker-compose
RUN chmod a+x /usr/local/bin/docker-compose
# 安装java
COPY jdk-11.0.6 /usr/local/jdk-11.0.6
# 安装MAVNE
COPY apache-maven-3.6.3 /usr/local/apache-maven-3.6.3
RUN chmod a+x /usr/local/apache-maven-3.6.3/bin/
#配置环境变量
ENV JAVA_HOME /usr/local/jdk-11.0.6
ENV MAVEN_HOME /usr/local/apache-maven-3.6.3
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
WORKDIR /
5、rabbitmq
version: '3'
services:
rabbitmq:
container_name: rabbitmq
image: rabbitmq:3.7.26-management
restart: always
privileged: true
hostname: myrabbit
ports:
- 15672:15672
- 5672:5672
environment:
RABBITMQ_DEFAULT_USER: 'admin'
RABBITMQ_DEFAULT_PASS: 'admin'
volumes:
- /usr/local/rabbitmq/data:/var/lib/rabbitmq
- /usr/local/rabbitmq/config:/etc/rabbitmq
6、zookeeper
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
volumes:
- /usr/local/zookeeper/data/data1:/data
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
volumes:
- /usr/local/zookeeper/data/data2:/data
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
volumes:
- /usr/local/zookeeper/data/data3:/data
7、jenkins
version: '3.1'
services:
jenkins:
container_name: jenkins
restart: always
build: dockerfile
ports:
- 8080:8080
- 5000:5000
volumes:
- ./data:/root/.jenkins
environment:
TZ: Asia/Shanghai
FROM tomcat
MAINTAINER zengdw 309606298@qq.com
# 安装MAVNE
COPY apache-maven-3.6.3 /usr/local/apache-maven-3.6.3
RUN chmod a+x /usr/local/apache-maven-3.6.3/bin/
#配置环境变量
ENV MAVEN_HOME /usr/local/apache-maven-3.6.3
ENV PATH $PATH:$MAVEN_HOME/bin
COPY jenkins.war /usr/local/tomcat/webapps/jenkins.war
EXPOSE 8080 5000
8、mysql
version: '3'
services:
mysql:
container_name: mysql
image: 'mysql'
restart: always
hostname: '192.168.5.8'
environment:
MYSQL_ROOT_PASSWORD: '123456'
ports:
- '3306:3306'
volumes:
- ./data:/var/lib/mysql
9、ELK
version: '2.2'
services:
kibana:
image: docker.elastic.co/kibana/kibana:7.7.0
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://es01:9200
- I18N_LOCALE=zh-CN
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
ports:
- 5601:5601
networks:
- elastic
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
container_name: es01
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node
volumes:
- /home/zdw/elastic/data:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
- elastic
logstash:
image: docker.elastic.co/logstash/logstash:7.7.0
container_name: logstash
ports:
- 9600:9600
- 9250:9250
environment:
- MONITORING_ELASTICSEARCH_HOSTS=http://es01:9200
volumes:
- ./logstash/pipeline/:/usr/share/logstash/pipeline/
- ./logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
networks:
elastic:
driver: bridge
pipeline/logstash.conf: logstash配置文件
# Logback -> Logstash -> Elasticsearch pipeline.
input {
tcp {
# 当mode=server时,要监听的地址。当mode=client时,要连接到的地址,默认为"0.0.0.0"
# host => "127.0.0.1"
port => 9250
# server, client
mode => "server"
tags => ["tags"]
codec => json_lines
}
}
output {
#控制台直接输出
stdout{
codec => rubydebug
}
#可以注释掉elasticsearch部分,查看控制台是否输出,判断logback->logstash是否生效
elasticsearch {
hosts => ["192.168.3.245:9200"]
action => "index"
index => "mylog"
}
}