docker 开发环境搭建

服务搭建

1.redis 2.mysql 3.ribbitmq 4.mongodb 5. mongo-express 6.portainer

注意初始脚本必须重新构建的时候才生效需要1.删除已有镜像 2.删除data目录

version: '3'
services:
  redis:
    image: "redis:6.0"
    # 容器名(以后的控制都通过这个)
    container_name: redis-compose
    hostname: redis-compose
    restart: always
    privileged: true
    ports:
      - 6379:6379
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./data/redis/:/data
      - ./conf/redis:/etc/redis
      - ./logs/redis/:/logs
    command: ["redis-server","/etc/redis/redis.conf"]
  mysql:
    image: mysql:5.7
    # 容器名(以后的控制都通过这个)
    container_name: mysql-compose
    hostname: mysql-compose
    # 重启策略
    restart: always
    ports:
      - "3306:3306"
    privileged: true
    volumes:
      # 挂挂载配置文件
      - ./conf/mysql:/etc/mysql/conf.d
      # 挂载日志
      - ./logs/mysql/:/var/log/mysql
      # 挂载数据
      - ./data/mysql:/var/lib/mysql
      - ./init/mysql:/docker-entrypoint-initdb.d/
    command: [
        'mysqld',
        '--innodb-buffer-pool-size=80M',
        '--character-set-server=utf8mb4',
        '--collation-server=utf8mb4_unicode_ci',
        '--default-time-zone=+8:00',
        '--lower-case-table-names=1'
    ]
    environment:
      # root 密码
      MYSQL_ROOT_PASSWORD: 123456
  #rabbitmq
  rabbitmq:
    #mq依赖的镜像
    image: rabbitmq:3-management
    container_name: rabbitmq-compose
    hostname: rabbitmq-compose
      # 重启策略
    restart: always
    ports:
      - 15672:15672
      - 5672:5672
    volumes:
      - ./data/rabbit:/var/lib/rabbitmq
      - ./init/rabbit:/docker-entrypoint-initdb.d/
    #environment:
       # root 密码
      #RABBITMQ_DEFAULT_USER: rabbit
      #RABBITMQ_DEFAULT_PASS: rabbit

  mongodb:
    image: mongo:4.4
    container_name: mongodb-compose
    hostname: mongodb-compose
    restart: always
    networks:
      - networkdb
    command: --auth
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: 123456
      MONGO_INITDB_DATABASE: collector
      MONGO_USERNAME: mongodb
      MONGO_PASSWORD: mongodb
    volumes:
      - ./data/mongo/:/data/db
      - ./init/mongo:/docker-entrypoint-initdb.d/
      - ./conf/mongo:/etc/mongo/mongod.conf
      - ./logs/mongo:/var/log/mongodb
    ports:
      - 27017:27017

  mongo-express:
    image: mongo-express
    container_name: mongo-express-compose
    hostname: mongo-express-compose
    restart: always
    depends_on:
      - mongodb
    networks:
      - networkdb
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: admin
      ME_CONFIG_MONGODB_ADMINPASSWORD: 123456
      ME_CONFIG_MONGODB_URL: mongodb://admin:123456@mongodb-compose:27017/

  #docker监控
  portainer:
    image: portainer/portainer-ce
    container_name: portainer-compose
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data/portainer/:/data
    ports:
      - "8000:8000"
      - "9000:9000"
      - "9443:9443"

networks:
  networkdb:

config:软件配置目录

redis.conf
mongod.conf

init:软件初始目录

mkdir -p ./init/mongo
mkdir -p ./init/mysql
mkdir -p ./init/rabbit

data:软件数据目录

logs:软件日志目录

mysql初始脚本:创建初始用户(非root)并授权 init.sql

use mysql;
create user 'collector'@'%' IDENTIFIED by '!QAZ@WSX3edc';
grant all on  *.* to collector@'%';

mongo初始脚本:init.sh 注意use数据库不能用环境变量代替,代替就生成用户失败 不知道为什么?

#!/bin/bash

echo "jjjjjjjjjjjjjjjjjjjjjjjjjjjjj"
echo "'$MONGO_USERNAME'"
echo "'$MONGO_PASSWORD'"

mongo <<EOF

use test;
db.createUser(
  {
    user: 'mongo',
    pwd:  'mongo',
    roles: [ { role: "readWrite", db: 'test' } ]
  }
);


use collector;
db.createUser(
  {
    user: '$MONGO_USERNAME',
    pwd:  '$MONGO_PASSWORD',
    roles: [ { role: "readWrite", db: 'collector' } ]
  }
);

EOF

rabbitmq初始脚本 init.sh 

#!/bin/bash

/opt/rabbitmq/sbin/rabbitmqctl add_user admin admin
/opt/rabbitmq/sbin/rabbitmqctl set_user_tags admin administrator
/opt/rabbitmq/sbin/rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"


版权声明:本文为three_stand原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。