编辑器上传文件到服务器

Vsocde

Idea

启动服务

文件获取

创建文件目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|-- /opt/docker 				        # 云服务器文件夹地址

|-- app # 项目存放的文件夹

|-- nginx # Nginx 存放的文件夹
|-- conf.d
|-- default.conf # nginx 配置
|-- html # 前端打包后的文件放到这个文件夹
|-- 50x.html
|-- index.html
|-- nginx # nginx 日志文件夹
|-- access.log
|-- error.log
|-- nginx.conf # nginx 全局配置

|-- redis # Redis 存放的文件夹
|-- redis.conf # redis 配置
|-- data # 数据地址
|-- appendonly.aof # 持久化AOF文件
|-- dump.rdb # 数据文件

|-- mysql # Mysql 存放的文件夹
|-- conf.d
|-- docker.conf
|-- mysql.conf # mysql 配置
|-- mysql # 数据文件
|-- #innodb_temp
|-- sys
|-- ...
|-- logs # 日志文件

|-- nacos # Nacos 存放的文件夹

|-- rabbitmq # Rabbitmq 存放的文件夹

|-- docker-compose.yml # docker-compose 执行文件

运行服务

  • 查看 Docker 网络桥段

    1
    docker network ls

  • 创建网络桥段

    1
    2
    # docker network create 桥段名
    docker network create app

  • 删除网络桥段

    1
    docker network rm 桥段名
  • /opt/docker/ 下创建 docker-compose.yml(根据个人需求添加代码)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    version: '3.8'    # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/

    services:
    nginx:
    restart: always # 重启策略
    image: "nginx:latest" # 镜像名 (${image}:${tag}) 如果镜像在本地不存在,Compose将会尝试拉取镜像
    container_name: "nginx" # 容器名 (自定义)
    ports: # 端口号
    - "80:80" # Http (宿主机:容器)
    - "443:443" # Https (宿主机:容器)
    volumes: # 数据卷
    - /opt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf # 配置文件 (宿主机:容器)
    - /opt/docker/nginx/conf.d:/etc/nginx/conf.d # 配置文件夹 (宿主机:容器)
    - /opt/docker/nginx/html:/usr/share/nginx/html # 前端打包文件 (宿主机:容器)
    - /opt/docker/nginx/nginx:/var/log/nginx # 日志文件夹 (宿主机:容器)
    # - /opt/docker/nginx/ssl/ # SSL证书地址 (自定义位置)
    networks: # 网络桥段
    - app # 指定在app网络桥段下网络互通

    redis:
    restart: always # 重启策略
    image: "redis:latest" # 镜像名 (${image}:${tag})
    container_name: "redis" # 容器名 (自定义)
    ports:
    - "6379:6379" # 端口号 (宿主机:容器)
    volumes: # 数据卷
    - /opt/docker/redis/redis.conf:/etc/redis/redis.conf # 配置文件 (宿主机:容器)
    - /opt/docker/redis/data/:/data # 数据文件夹 (宿主机:容器)
    command: [ "redis-server","/etc/redis/redis.conf" ] # 启动 redis 服务
    networks: # 网络桥段
    - app # 指定在app网络桥段下网络

    mysql:
    restart: always # 重启策略
    image: "mysql:latest" # 镜像名 (${image}:${tag})
    container_name: "mysql" # 容器名 (自定义)
    ports:
    - "3306:3306" # 端口号 (宿主机:容器)
    volumes: # 数据卷
    - /opt/docker/mysql/conf.d/:/etc/mysql/conf.d # 配置文件夹 (宿主机:容器)
    - /opt/docker/mysql/data/:/var/lib/mysql # 数据文件夹 (宿主机:容器)
    - /opt/docker/mysql/logs/:/logs # 日志文件夹 (宿主机:容器)
    environment:
    MYSQL_ROOT_PASSWORD: 123456 # root用户密码 (自定义)
    TZ: Asia/Shanghai # mysql时区
    command:
    # MySQL8的密码验证方式默认是 caching_sha2_password,但是很多的连接工具还不支持该方式
    # 就需要手动设置下mysql的密码认证方式为以前的 mysql_native_password 方式
    --default-authentication-plugin=mysql_native_password
    --character-set-server=utf8mb4
    --collation-server=utf8mb4_general_ci
    --explicit_defaults_for_timestamp=true
    --lower_case_table_names=1 # 设置表名大小写不敏感
    networks: # 网络桥段
    - app # 指定在app网络桥段下网络

    nacos:
    restart: always # 重启策略
    image: "nacos/nacos-server" # 镜像名 (${image}:${tag})
    container_name: "nacos" # 容器名 (自定义)
    ports: # 端口号
    - "8848:8848"
    environment:
    MODE: standalone # 单机启动
    networks: # 网络桥段
    - app # 指定在app网络桥段下网络

    rabbitmq:
    restart: always # 重启策略
    image: "rabbitmq" # 镜像名 (${image}:${tag})
    container_name: "rabbitmq" # 容器名 (自定义)
    ports: # 端口号
    - "15672:15672"
    environment:
    TZ: Asia/Shanghai # 时区
    RABBITMQ_DEFAULT_USER: root # 登录账号
    RABBITMQ_DEFAULT_PASS: 123456 # 登录密码
    RABBITMQ_DEFAULT_VHOST: / # 表示权限,谁能访问,/全部所有
    networks: # 网络桥段
    - app # 指定在app网络桥段下网络

    networks:
    app: # Use a custom driver
    driver_opts:
    com.docker.network.enable_ipv6: "true" # 开启IpV6访问
  • 启动服务

    1
    docker-compose -f /opt/docker/docker-compose.yml up -d

  • 查看项目是否正常运行

    1
    docker-compose ps -a

  • 启动 Rabbitmq 图形化界面(需要 Rabbitmq  服务再开启

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 进入容器内
    docker exec -it rabbitmq bash

    # 进入 rabbitmq 默认安装目录
    cd /opt/rabbitmq/sbin

    # 开启图形化管理
    ./rabbitmq-plugins enable rabbitmq_management

    # 退出容器
    exit

项目示例

项目准备

  • 项目目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    |-- /opt/docker 				        # 云服务器文件夹地址

    |-- backend # 项目存放的文件夹
    |-- backend-0.0.1-SNAPSHOT.jar # jar包
    |-- Dockerfile # 构建镜像文件

    |-- nginx # Nginx 存放的文件夹
    |-- conf.d
    |-- default.conf # nginx 配置
    |-- html # 前端打包后的文件放到这个文件夹
    |-- 50x.html
    |-- index.html
    |-- nginx # nginx 日志文件夹
    |-- access.log
    |-- error.log
    |-- nginx.conf # nginx 全局配置

    |-- redis # Redis 存放的文件夹
    |-- redis.conf # redis 配置
    |-- data # 数据地址
    |-- appendonly.aof # 持久化AOF文件
    |-- dump.rdb # 数据文件

    |-- mysql # Mysql 存放的文件夹
    |-- conf.d
    |-- docker.conf
    |-- mysql.conf # mysql 配置
    |-- mysql # 数据文件
    |-- #innodb_temp
    |-- sys
    |-- ...
    |-- logs # 日志文件

    |-- docker-compose.yml # docker-compose 执行文件
  • 创建 docker 网络桥段

    1
    docker network create app
  • /opt/docker/ 下创建 docker-compose.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    version: '3.8'    # 对应 Docker 版本: https://docs.docker.com/compose/compose-file/compose-versioning/

    services:
    backend:
    build: # 构建
    context: ./backend # 需要构建的文件路径 (可以是Dockerfile的文件路径,也可以是到链接到git仓库的url)
    dockerfile: ./Dockerfile # 不能和image同时使用
    container_name: "backend"
    ports: # 端口号
    - "8080:8080" # 端口号 (宿主机:容器)
    depends_on: # 依赖项 (需等待 redis、mysql 先启动, backend 再启动)
    - redis
    - mysql
    networks:
    - app
    # links: # 容器之间链接 (@host -> @容器别名) 即将被官方遗弃
    # - "redis:redis" # 容器名:别名 (redis://user:password@127.0.0.1:6379/db -> redis://user:password@redis:6379/db)
    # - "mysql:mysql" # 容器名:别名 (mysql://root:password@127.0.0.1:3306/db -> mysql://root:password@mysql:3306/db)

    nginx:
    restart: always # 重启策略
    image: "nginx:latest" # 镜像名 (${image}:${tag})
    container_name: "nginx" # 容器名 (自定义)
    ports: # 端口号
    - "80:80" # Http (宿主机:容器)
    - "443:443" # Https (宿主机:容器)
    volumes: # 数据卷
    - /opt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf # 配置文件 (宿主机:容器)
    - /opt/docker/nginx/conf.d:/etc/nginx/conf.d # 配置文件夹 (宿主机:容器)
    - /opt/docker/nginx/html:/usr/share/nginx/html # 前端打包文件 (宿主机:容器)
    - /opt/docker/nginx/nginx:/var/log/nginx # 日志文件夹 (宿主机:容器)
    # - /opt/docker/nginx/ssl/ # SSL证书地址 (自定义位置)
    depends_on: # 依赖项
    - backend
    networks: # 网络桥段
    - app # 指定在app网络桥段下网络互通

    redis:
    restart: always # 重启策略
    image: "redis:latest" # 镜像名 (${image}:${tag})
    container_name: "redis" # 容器名 (自定义)
    ports:
    - "6379:6379" # 端口号 (宿主机:容器)
    volumes: # 数据卷
    - /opt/docker/redis/redis.conf:/etc/redis/redis.conf # 配置文件 (宿主机:容器)
    - /opt/docker/redis/data/:/data # 数据文件夹 (宿主机:容器)
    command: [ "redis-server","/etc/redis/redis.conf" ] # 启动 redis 服务
    networks: # 网络桥段
    - app # 指定在app网络桥段下网络

    mysql:
    restart: always # 重启策略
    image: "mysql:latest" # 镜像名 (${image}:${tag})
    container_name: "mysql" # 容器名 (自定义)
    ports:
    - "3306:3306" # 端口号 (宿主机:容器)
    volumes: # 数据卷
    - /opt/docker/mysql/conf.d/:/etc/mysql/conf.d # 配置文件夹 (宿主机:容器)
    - /opt/docker/mysql/data/:/var/lib/mysql # 数据文件夹 (宿主机:容器)
    - /opt/docker/mysql/logs/:/logs # 日志文件夹 (宿主机:容器)
    environment:
    MYSQL_ROOT_PASSWORD: 123456 # root用户密码 (自定义)
    TZ: Asia/Shanghai # mysql时区
    command:
    # MySQL8的密码验证方式默认是 caching_sha2_password,但是很多的连接工具还不支持该方式
    # 就需要手动设置下mysql的密码认证方式为以前的 mysql_native_password 方式
    --default-authentication-plugin=mysql_native_password
    --character-set-server=utf8mb4
    --collation-server=utf8mb4_general_ci
    --explicit_defaults_for_timestamp=true
    --lower_case_table_names=1 # 设置表名大小写不敏感
    networks: # 网络桥段
    - app # 指定在app网络桥段下网络

    networks:
    app: # 使用默认配置
    name: app # 否则会多创建一个 docker_app 桥段 (可选)
  • 运行项目

    1
    docker-compose /opt/docker/docker-compose.yml up -d

注意点

  • 后端项目使用的 RedisMySQL 地址要换成网络桥段

    1
    2
    3
    4
    # host -> 容器别名

    redis://user:password@127.0.0.1:6379/db -> redis://user:password@redis:6379/db
    mysql://root:password@127.0.0.1:3306/db -> mysql://root:password@mysql:3306/db
  • 容器启动后,数据库并没有数据,需要导入数据库

  • 防火墙一定要打开,否则访问不了