安装docker参考:Ubuntu 安装 docker 配置环境及其常用命令

一、Mysql 安装

1.1、物理机部署

安装Mysql
sudo apt-get update
sudo apt-get install mysql-server
sudo service mysql start
初始化mysql服务,并登录账户
mysql -u root

创建账户,以本地的方式访问
CREATE USER 'gpt'@'localhost' IDENTIFIED BY 'gpt';
给账户赋于所有的本地操作的权限
GRANT ALL PRIVILEGES ON *.* TO 'gpt'@'localhost';
FLUSH PRIVILEGES;
创建数据库
create database langgraph;

1.2、使用docker部署

整个过程分为三步:

  1. 创建 my.cnf 文件
  2. 创建 init.sql 文件
  3. 创建 docker-compose.yml 文件后启动。 整个过程需要注意本地待挂载 文件/文件夹 读写权限问题

第一步: 首先先创建一个 my.cnf 文件,文件的内容见下文,该文件主要用于挂载mysql容器的设置

my.cnf文件内容

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
# 设置东八区时区
default-time_zone = '+8:00'

# 设置密码验证规则,保持兼容性
authentication_policy=mysql_native_password

# 初始化连接时设置字符集
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'

# 配置字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
skip-name-resolve


# 配置数据库表名小写(跨平台建议打开)
# lower_case_table_names=1

# 远程访问相关配置
# 设置监听所有网络接口,允许远程连接
bind-address = 0.0.0.0
# # 关闭主机名解析(提高连接速度)
# skip-name-resolve
# # 调整最大连接数(可根据需求修改)
# max_connections = 600

第二步: 设置自定义账户的权限

  • 当前目录下创建一个文件,命名为 init.sql,内容如下,在 docker-compose.ymlvolumes 中挂载到 /docker-entrypoint-initdb.d/ 目录下
  • 在 Docker 官方的 MySQL 镜像中,提供了一个非常方便的机制:任何挂载到 /docker-entrypoint-initdb.d/ 目录下的 .sql.sh 脚本,都会在数据库第一次初始化(即数据目录为空时)自动执行。
-- 创建本地权限 gpt 用户, 123456 是密码,需要和下文 yml 对应
CREATE USER IF NOT EXISTS 'gpt'@'localhost' IDENTIFIED BY '123456';
-- 授权本地权限
GRANT ALL PRIVILEGES ON *.* TO 'gpt'@'localhost' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;

第三步:创建一个docker-compose.yml 文件

docker-compose.yml 文件

services:
  mysql:
    image: mysql:8.0.41
    container_name: mysql
    restart: on-failure:5 # 防止有意停止时重启, 最多启动5次
    environment:
      LOWER_CASE_TABLE_NAMES: 1
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-123456}   # root 用户如果开启远程访问,密码需要设置复杂一些,如果宿主机环境变量不存在,使用 123456 作为默认值
      MYSQL_DATABASE: Database_test  # 创建一个数据库
      MYSQL_USER: gpt
      MYSQL_PASSWORD: 123456
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql           # 挂载mysql 数据卷
      - mysql_log:/var/log/mysql            # 挂在mysql 日志卷
      - /etc/localtime:/etc/localtime:ro    # 挂载当前服务器时间到容器
      - ./my.cnf:/etc/mysql/my.cnf          # 自定义MySQL配置用于安全/性能
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql  # 初始化数据库脚本, 给定 gpt 用户权限
    networks:
      - app_network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-123456}"]  #
      interval: 10s
      timeout: 5s
      retries: 5
    # # 资源限制配置(Docker Swarm 模式下生效)
    # deploy:
    #   resources:
    #     limits:
    #       cpus: "1.0"
    #       memory: 2G
    #     reservations:
    #       cpus: "0.5"
    #       memory: 512M

    # 资源限制 (生产单机版), docker-compose 单机生效
    mem_limit: 2g                          # 容器最大内存
    cpus: 1.0                              # 限制 CPU 使用量
    
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

volumes:
  mysql_log:
    name: mysql8.0.41_log
  mysql_data:
    name: mysql8.0.41_data

networks:
  app_network:
    driver: bridge
  1. 运行
docker-compose up -d
  1. 查看
docker ps -a

在这里插入图片描述

  1. 验证 gpt 用户权限

进入docker容器内部并登录mysql, 查看自定义gpt用户的远程本地权限

#进入容器内部
docker exec -it 容器名 /bin/bash
#登录mysql,不要输入密码,两次按两次回车键即可
mysql -u root -p
mysql> 

验证:查看所有的用户, % 表示远程  localhost 表示本地,两者皆有表示即可以远程又可以本地
mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| gpt              | %         |    <-- 允许账户gpt从任何主机连接
| root             | %         |
| gpt              | localhost |    <-- 允许账户gpt从本地连接
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
然后退出并重启容器即可

二、PostgreSQL 安装

2.1、使用docker 临时部署

docker run -d --rm -p 5432:5432 --name postgres_test -v /etc/localtime:/etc/localtime:ro -e POSTGRES_PASSWORD=123456 postgres:16.9

2.2、 使用docker-compose部署

services:
  pg:
    image: postgres:16.9
    container_name: pg
    restart: on-failure:5 # 防止有意停止时重启, 最多启动5次
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-123456}
      POSTGRES_DB: Database_test  # 创建一个数据库
    ports:
      - "5432:5432"
    volumes:
      - pg_data:/var/lib/postgresql/data    # 挂载数据
      - /etc/localtime:/etc/localtime:ro
      # 挂载 postgresql.conf 按需放开,否则建议不用专门定制
      # - ./postgresql.conf:/etc/postgresql/postgresql.conf
      # 如需初始化脚本,用下面方式
      # - ./init.sql:/docker-entrypoint-initdb.d/init.sql
      # - pg_log:/var/log/postgresql  # PostgreSQL 默认不使用该目录保存日志,需要在上述 .conf 定义好再使用
    networks:
      - pg_network
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres"]  # 使用超级管理员 postgres 用户健康检测
      interval: 10s
      timeout: 5s
      retries: 5
    # # 资源限制配置(Docker Swarm 模式下生效)
    # deploy:
    #   resources:
    #     limits:
    #       cpus: "1.0"
    #       memory: 2G
    #     reservations:
    #       cpus: "0.5"
    #       memory: 512M

    # 资源限制 (生产单机版), docker-compose 单机生效
    mem_limit: 2g                          # 容器最大内存
    cpus: 1.0                              # 限制 CPU 使用量
    
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"
volumes:
  pg_data:
    name: postgres16_data
  # pg_log:
  #   name: postgres16_log
networks:
  pg_network:
    driver: bridge
# 运行
docker-compose up -d

在这里插入图片描述


三、Neo4j图数据库安装

3.1、docker 临时部署

临时是启动 neo4j 图数据库服务端

  • 7474 for http 协议可视化web服务
  • 7473 for https 协议
  • 7687 for bolt 远程连接 neo4j 数据库服务端
docker run --rm -d -p 7474:7474 -p 7687:7687 --name neo4j -e NEO4J_AUTH=neo4j/123456 neo4j:4.4-community

挂载一些目录(需要提前创建这些目录,并且利用上述临时启动的容器,将一些目录copy到宿主机上

docker run --rm -d -p 7474:7474 -p 7687:7687 --name neo4j \
-e NEO4J_AUTH=neo4j/123456 \
-v ./data:/data \
-v ./logs:/logs \
-v ./conf:/var/lib/neo4j/conf \
-v ./import:/var/lib/neo4j/import \
neo4j:4.4-community

3.2、docker-compose部署

services:
  neo4j:
    image: neo4j:4.4-community
    container_name: neo4j
    restart: on-failure:5 # 防止有意停止时重启, 最多启动5次
    environment:
      NEO4J_AUTH: ${NEO4J_AUTH:-neo4j/123456}  # 用环境变量支持自定义账户密码,默认 neo4j/123456, 若公网远程提供服务需设置更加复杂的密码
      # 启用APOC插件
      NEO4J_PLUGINS: '["apoc"]'
      # 允许APOC程序
      NEO4J_dbms_security_procedures_unrestricted: "apoc.*"
      NEO4J_dbms_security_procedures_allowlist: "apoc.*"
      # 由于可能要下载 apoc 插件,需要挂载代理服务器(需要改成自己的)
      HTTPS_PROXY: http://192.168.1.3:7892
      HTTP_PROXY: http://192.168.1.3:7892
      http_proxy: http://192.168.1.3:7892
      https_proxy: http://192.168.1.3:7892
      # 如需自定义更多参数,可按需增添
    ports:
      - "7474:7474"    # HTTP  协议可视化web服务
      - "7473:7473"    # HTTPS 协议可视化web服务
      - "7687:7687"    # Bolt  远程连接 neo4j 数据库服务端
    volumes:
      - /etc/localtime:/etc/localtime:ro   # 挂载系统时间
      - neo4j_data:/data      # 挂载数据卷
      - neo4j_logs:/logs      # 挂载日志卷
      - neo4j_conf:/var/lib/neo4j/conf
      - neo4j_import:/var/lib/neo4j/import
      - neo4j_plugins:/var/lib/neo4j/plugins  # 挂载插件卷
    networks:
      - neo4j_network
    healthcheck:
      # 检查服务健康,查看bolt 健康情况
      test: ["CMD-SHELL", "bash -c '</dev/tcp/localhost/7687'"]
      interval: 15s
      timeout: 10s
      retries: 5
    # # 资源限制配置(Docker Swarm 模式下生效)
    # deploy:
    #   resources:
    #     limits:
    #       cpus: "1.0"
    #       memory: 2G
    #     reservations:
    #       cpus: "0.5"
    #       memory: 512M

    # 资源限制 (生产单机版), docker-compose 单机生效
    mem_limit: 2g                          # 容器最大内存
    cpus: 1.0                              # 限制 CPU 使用量
    
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

volumes:
  neo4j_data:
    name: neo4j4.4_data
  neo4j_logs:
    name: neo4j4.4_logs
  neo4j_conf:
    name: neo4j4.4_conf
  neo4j_import:
    name: neo4j4.4_import
  neo4j_plugins:
    name: neo4j4.4_plugins
networks:
  neo4j_network:
    driver: bridge

运行

docker-compose up -d

查看日志

docker-compose logs -f

在这里插入图片描述

web 访问 neo4j,本地浏览器打开 127.0.0.1:7474
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐