docker-compose常用镜像

296 阅读4分钟

前提

注意,下面的镜像都创建了network,大家要创建自己的网络,或者删除掉我的network配置信息

portainer docker管理

version: '3'
volumes:
  portainer_data:

services:
  portainer:
    networks:
      default:
        ipv4_address: 172.18.0.2
    image:  portainer/portainer
    container_name: portainer
    ports:
      - "9000:9000"
    command: -H unix:///var/run/docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/data
networks:
  default:
    external:
      name: huzhihui

mysql5.7

前置准备 创建conf文件夹编辑my.conf文件

  • utf8mb4_unicode_ci和utf8mb4_general_ci的对比:

  • 准确性:

    • utf8mb4_unicode_ci是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序
    • utf8mb4_general_ci没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。
    • 但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。
  • 性能

    • utf8mb4_general_ci在比较和排序的时候更快
    • utf8mb4_unicode_ci在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。
    • 但是在绝大多数情况下发,不会发生此类复杂比较。相比选择哪一种collation,使用者更应该关心字符集与排序规则在db里需要统一。
[mysqld]
user=mysql
default-storage-engine=INNODB
#character-set-server=utf8
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
max_connections=3000
[client]
#utf8mb4字符集可以存储emoji表情字符
#default-character-set=utf8
default-character-set=utf8mb4
[mysql]
#default-character-set=utf8
default-character-set=utf8mb4

docker-compose.yml内容

version: '3'
services:
  mysql:
    image: mysql:5.7.16
    networks:
      default:
        ipv4_address: 172.18.0.5
    container_name: mysql5.7
    volumes:
      - ./data:/var/lib/mysql
      - ./conf/my.cnf:/etc/my.cnf
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "TZ=Asia/Shanghai"
    ports:
      - 3306:3306
networks:
  default:
    external:
      name: huzhihui

mysql8

  • my.cof
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=2000

server-id=1
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=binlog
replicate-ignore-db=mysql,information_schema,performance_schema,sys
  • docker-compose.yml
version: '3'
services:
  mysql:
    image: mysql:8.0.31
    networks:
      - default
    container_name: mysql8
    volumes:
      - ./data:/var/lib/mysql
      - ./conf/my.cnf:/etc/my.cnf
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "TZ=Asia/Shanghai"
    ports:
      - 3306:3306
networks:
  default:
    external:
      name: huzhihui

mongodb

version: '3.1'
services:
  mongo:
    image: mongo:3.4.0
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    networks:
      default:
        ipv4_address: 172.18.0.3
    container_name: mongo
    ports:
      - 27017:27017
    volumes:
      - ./data:/data
networks:
  default:
    external:
      name: huzhihui

jenkins

version: '3'
services:
  jenkins:
    image: huzhihui/jenkins:1.0.0
    networks:
      default:
        ipv4_address: 172.18.0.6
    container_name: jenkins
    volumes:
      - ./jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /etc/localtime:/etc/localtime
      - /usr/lib64/libltdl.so.7:/usr/lib64/libltdl.so.7
    ports:
      - "8080:8080"
    environment:
      - "TZ=Asia/Shanghai"
    user: root
networks:
  default:
    external:
      name: huzhihui

gitlab私服仓库

version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ee:latest'
    hostname: '192.168.137.200'
    container_name: gitlab
    networks:
      - default
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.137.200'
    ports:
      - '80:80'
      - '4443:443'
      - '222:22'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
networks:
  default:
    external:
      name: huzhihui

查看密码 sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

image.png

gitea私服

额外注意配置邮件,查阅官方文档配置

version: "3"
services:
  gitea:
    image: gitea/gitea:1.14.5
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      default:
        ipv4_address: 172.18.0.20
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3001:3000"
      - "222:22"
networks:
  default:
    external:
      name: huzhihui

redis镜像

  • 配置文件redis.conf
bind 0.0.0.0
port 6379
timeout 0
requirepass huzhihui
  • docker-compose.yml
version: '3'
services:
  redis:
    image: redis:4
    container_name: redis
    environment:
      TZ: Asia/Shanghai
    networks:
      - default
    ports:
      - 6379:6379
    command: ["redis-server","/etc/redis/redis.conf"]
    volumes:
      - ./conf:/etc/redis/
      - ./data:/data
networks:
  default:
    external:
      name: huzhihui

nginx前端镜像使用

配置文件

由于是直接使用nginx官方镜像,所以需要挂载配置文件和网站路径,默认挂载的配置文件路径conf.d

  • 创建conf.d文件夹
mkdir -p conf.d
  • 创建配置文件,可以是多个文件,我这里举例创建一个default.conf

vim default.conf

server {
  listen 8092;
  location / {
    add_header 'Access-Control-Allow-Origin' "*";
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    gzip_static on;
    gzip  on;
    gzip_proxied any;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 5;
    gzip_types text/plain text/css application/json application/javascript;
    root /data;
  }
  location ~/(.*)\.gz$ {
    proxy_pass http://127.0.0.1:8092/$1;
    proxy_http_version 1.1;
  }
}
  • 如果想实现静态资源服务器可以浏览目录则可以用如下配置

autoindex on;打开目录索引

server {
  listen 8012;
  location / {
    root /data;
    autoindex on;
  }
}

docker-compose.yml

挂载了3个文件夹,如下配置

version: '3.1'
services:
  nginx-welcome:
    image: nginx:1.23
    container_name: nginx-welcome
    networks:
      - default
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 8092:8092
    volumes:
      - ./conf.d:/etc/nginx/conf.d
      - ./logs:/var/log/nginx
      - /alidata/nginx/nginx-welcome:/data
networks:
  default:
    external:
      name: huzhihui
  • 启动即可访问http://127.0.0.1:8092

socks5代理服务器的使用

详情见

禅道项目管理软件

version: '3'
services:
  zentao:
    image: easysoft/zentao:17.7
    networks:
      - default
    container_name: zentao
    volumes:
      - ./data/zentaopms:/www/zentaopms
      - ./data/mysql:/var/lib/mysql
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
      - "TZ=Asia/Shanghai"
    ports:
      - 8001:80
networks:
  default:
    external:
      name: huzhihui

RabbitMq常用镜像

version: '3'
services:
  rabbitmq:
    image: rabbitmq:3-management
    container_name: rabbitmq
    networks:
      - default
    environment:
      - "TZ=Asia/Shanghai"
      - "RABBITMQ_DEFAULT_USER=admin"
      - "RABBITMQ_DEFAULT_PASS=admin"
    volumes:
      - "./data:/var/lib/rabbitmq"
    ports:
      - 5672:5672
      - 15672:15672
      - 1883:1883
      - 15675:15675
networks:
  default:
    external:
      name: huzhihui