Docker 安装各种数据库

发表于
65 11~14 分钟

一次安装多个常用数据库

  • mysql-8.1

  • mysql-5.7

  • mssql-2022

  • mssql-2019

  • mssql-2017

  • postgres-15.4

不需要安装的在前面#注释 例如

#    mssql-2022:
#        restart: always
#        container_name: mssql-2022
#        network_mode: bridge
#        user: root
#        volumes:
#            - './mssql-2022:/var/opt/mssql'
#        ports:
#            - '3597:1433'
#        environment:
#            - TZ=Asia/Shanghai
#            - ACCEPT_EULA=Y
#            - SA_PASSWORD=123456
#            - MSSQL_LCID=2052
#            - MSSQL_COLLATION=Chinese_PRC_CI_AS
#        image: 'mcr.microsoft.com/mssql/server:2022-latest'

完整安装 compose 文件,密码都是写了 123456,注意修改,挂载目录都是挂载在当前目录下

version: '3.3'
services:
    mysql-8.1:
        restart: always
        container_name: mysql-8.1
        network_mode: bridge
        volumes:
            - './mysql-8.1/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:rw'
            - './mysql-8.1/data:/var/lib/mysql/:rw'
            - './mysql-8.1/logs:/var/log/mysql/:rw'
            - './mysql-8.1/mysqlBackup:/data/mysqlBackup'
        ports:
            - '3599:3306'
        command: 
            - --default-authentication-plugin=caching_sha2_password
            - --character-set-server=utf8mb4
            - --collation-server=utf8mb4_general_ci
            - --explicit_defaults_for_timestamp=true
        healthcheck:
           test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
           interval: 3s
           retries: 5
           start_period: 30s
        environment:
            - TZ=Asia/Shanghai
            - MYSQL_ROOT_HOST=%
            - MYSQL_ROOT_PASSWORD=123456
        image: 'mysql:8.1.0'

    mysql-5.7:
        restart: always
        container_name: mysql-5.7
        network_mode: bridge
        volumes:
            #- './mysql-5.7/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:rw'
            - './mysql-5.7/data:/var/lib/mysql/:rw'
            - './mysql-5.7/logs:/var/log/mysql/:rw'
            - './mysql-5.7/mysqlBackup:/data/mysqlBackup'
        ports:
            - '3598:3306'
        command: 
            - --default-authentication-plugin=mysql_native_password
            - --character-set-server=utf8mb4
            - --collation-server=utf8mb4_general_ci
            - --explicit_defaults_for_timestamp=true
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
            interval: 3s
            retries: 5
            start_period: 30s
        environment:
            - TZ=Asia/Shanghai
            - MYSQL_ROOT_HOST=%
            - MYSQL_ROOT_PASSWORD=123456
        image: 'mysql:5.7'

    mssql-2022:
        restart: always
        container_name: mssql-2022
        network_mode: bridge
        user: root
        volumes:
            - './mssql-2022:/var/opt/mssql'
        ports:
            - '3597:1433'
        environment:
            - TZ=Asia/Shanghai
            - ACCEPT_EULA=Y
            - SA_PASSWORD=123456
            - MSSQL_LCID=2052
            - MSSQL_COLLATION=Chinese_PRC_CI_AS
        image: 'mcr.microsoft.com/mssql/server:2022-latest'

    mssql-2019:
        restart: always
        container_name: mssql-2019
        network_mode: bridge
        user: root
        volumes:
            - './mssql-2019:/var/opt/mssql'
        ports:
            - '3596:1433'
        environment:
            - TZ=Asia/Shanghai
            - ACCEPT_EULA=Y
            - SA_PASSWORD=123456
            - MSSQL_LCID=2052
            - MSSQL_COLLATION=Chinese_PRC_CI_AS
        image: 'mcr.microsoft.com/mssql/server:2019-latest'

    mssql-2017:
        restart: always
        container_name: mssql-2017
        network_mode: bridge
        volumes:
            - './mssql-2017:/var/opt/mssql'
        ports:
            - '3595:1433'
        environment:
            - TZ=Asia/Shanghai
            - ACCEPT_EULA=Y
            - SA_PASSWORD=123456
            - MSSQL_LCID=2052
            - MSSQL_COLLATION=Chinese_PRC_CI_AS
        image: 'mcr.microsoft.com/mssql/server:2017-latest'

    postgres-15.4:
        restart: always
        container_name: postgres-15.4
        network_mode: bridge
        volumes:
            - './postgres-15.4/data:/var/lib/postgresql/data'
        healthcheck:
            test: [ "CMD", "pg_isready" ]
            interval: 10s
            timeout: 5s
            retries: 5
        ports:
            - '3594:5432'
        environment:
            - TZ=Asia/Shanghai
            - POSTGRES_PASSWORD=123456
            - ALLOW_IP_RANGE=0.0.0.0/0
        image: 'postgres:15.4'


2