常用的docker-compose

265 阅读4分钟

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"
  }
}