使用Docker部署DashDot服务器仪表盘和Drupal

DashDot是一款简单、实用的开源现代服务器仪表盘,主要应用于小型 VPS服务器它是一个界面非常漂亮的监控服务器面板!

1、拉取Dashdot镜像

bash 复制代码
 docker pull  mauricenino/dashdot

2. 部署DashDot应用

bash 复制代码
创建部署目录
mkdir -p /data/dashdot
cd  /data/dashdot

使用docker-cli创建Dashdot容器

bash 复制代码
docker  run  -d  \
  -p 8987:3001 \
  -v /etc/os-release:/etc/os-release:ro \
  -v /proc/1/ns/net:/mnt/host_ns_net:ro \
  --privileged \
  mauricenino/dashdot

使用docker compose方式快速创建Dashdot容器

bash 复制代码
编辑docker-compose.yaml文件

version: '3'
services:
  dashdot:
    image: mauricenino/dashdot
    ports:
      - 8987:3001
    volumes:
      - /etc/os-release:/etc/os-release:ro
      - /proc/1/ns/net:/mnt/host_ns_net:ro
    privileged: true

运行

bash 复制代码
docker compose up -d

地访问DashDot服务

访问地址:http://ip:8987

在浏览器可以访问Dashdot服务器仪表盘首页。可以看出它识别出我的CPU ,内存,硬盘等信息

1、拉取Drupal镜像

bash 复制代码
获取Drupal镜像
docker pull drupal:latest
bash 复制代码
!/bin/bash
# 创建Drupal临时容器
docker run --name drupal_temp -p 8080:80 -d drupal:latest
# 压缩容器内文件并输出到宿主机
docker exec drupal_temp tar -czf - -C /var/www/html . > ~/drupal_files.tar.gz
# 解压到宿主机目录
mkdir -p ~/drupal_backup && tar -xzf ~/drupal_files.tar.gz -C /projects/drupal/web
# 清理临时容器
docker rm -f drupal_temp

执行完毕后,容器内的代码就安全地"搬迁"到了宿主机,为持久化打下了基础。

第三步:编写Docker Compose配置文件

接下来需要编写docker-compose.yml文件,这是整个部署的核心:

docker-compose.yml

bash 复制代码
version: '3.8'

services:
  drupal:
    image: drupal:latest
    container_name: drupal
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ~/drupal/web:/var/www/html
      - ~/drupal/modules:/var/www/html/modules
      - ~/drupal/themes:/var/www/html/themes
      - ~/drupal/sites:/var/www/html/sites
    depends_on:
      - mariadb
    environment:
      DRUPAL_DATABASE_HOST: mariadb
      DRUPAL_DATABASE_NAME: drupal
      DRUPAL_DATABASE_USER: drupaluser
      DRUPAL_DATABASE_PASSWORD: drupaluser
      DRUPAL_PROFILE: standard
    networks:
      - drupal_network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3

  mariadb:
    image: mariadb:latest
    container_name: mariadb
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: drupal
      MYSQL_USER: drupaluser
      MYSQL_PASSWORD: drupaluser
      MYSQL_ROOT_PASSWORD: rootpassword123
      TZ: Asia/Shanghai
    volumes:
      - mariadb_data:/var/lib/mysql
      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3306:3306"
    networks:
      - drupal_network
    command:
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
      - "--max_allowed_packet=256M"
      - "--innodb_buffer_pool_size=256M"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

volumes:
  mariadb_data:
    driver: local

networks:
  drupal_network:
    external: true
bash 复制代码
1. 创建外部网络(如果不存在)
# 创建网络
docker network create drupal_network
# 查看网络
docker network ls
2. 创建必要的目录
# 创建项目目录结构
mkdir -p ~/drupal/{web,modules,themes,sites,mysql}
  1. 创建 MySQL 配置文件
bash 复制代码
# 创建 MySQL 配置文件
cat > ~/drupal/mysql/my.cnf << 'EOF'
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_allowed_packet = 256M
innodb_buffer_pool_size = 256M
innodb_log_file_size = 128M
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 2

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
EOF
相关推荐
峰顶听歌的鲸鱼1 小时前
13.docker部署
linux·运维·笔记·docker·容器·云计算
乌日尼乐1 小时前
【笔记】docker实用技巧与常见操作
docker
橘子编程1 小时前
仓颉语言变量与表达式解析
java·linux·服务器·开发语言·数据库·python·mysql
虚神界熊孩儿1 小时前
linux下创建用户和用户组
linux·运维·服务器
python百炼成钢1 小时前
53.Linux regmap驱动框架
linux·运维·服务器·驱动开发
WhiteLie7771 小时前
在 win11 (x86) docker destop 部署 ctyunos 2.0.1 (aarch64) 环境做(伪)容器嵌套
docker·ctyunos
python百炼成钢1 小时前
54.Linux IIO驱动框架
linux·运维·服务器·驱动开发
星哥说事1 小时前
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击
linux·服务器