1.安装docker

$ curl -sSL https://get.daocloud.io/docker | sh
#启动docker服务并设置开机自启
$ systemctl start docker && systemctl enable docker

2.安装Docker Compose

$ curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

3.使用docker-compose同时部署数据库(推荐)

#首先创建一个项目目录并进入
$ mkdir /kodbox && cd /kodbox

#设置环境变量(必须修改等号右边的值,形式如 `MYSQL_USER=kodbox`,注意不要包含&符号),这些在docker启动时会自动传入容器
$ vi .env
#下面是文件内容
MYSQL_ROOT_PASSWORD=[数据库ROOT密码]
MYSQL_DATABASE=[新建数据库名称]
MYSQL_USER=[新建数据库用户名]
MYSQL_PASSWORD=[新建数据库用户密码]

#新建docker-compose.yml 文件
$ vi docker-compose.yml
version: "3.5"

services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - "./db:/var/lib/mysql"        #左边 ./db 代表数据库持久化目录位置
    environment:
      - "TZ=Asia/Shanghai"
      - "MYSQL_ROOT_PASSWORD"
      - "MYSQL_DATABASE"
      - "MYSQL_USER"
      - "MYSQL_PASSWORD"

  app:
    image: kodcloud/kodbox
    ports:
      - 80:80        #左边 80 是主机访问端口,可按需修改
    links:
      - db
      - redis
    volumes:
      - "./site:/var/www/html"        #左边 ./site 代表kodbox持久化目录位置
    restart: always

  redis:
    image: redis:alpine
    environment:
      - "TZ=Asia/Shanghai"
    restart: always
#进入项目目录,执行docker-compose 启动命令,会自动拉取容器并运行
$ docker-compose up -d
#下面是输出内容
Creating network "kodbox_default" with the default driver
Creating kodbox_redis_1 ... done
Creating kodbox_db_1    ... done
Creating kodbox_app_1   ... done

#列出docker容器,可以看到3个容器正在运行
$ docker ps 
#下面是输出内容
CONTAINER ID   IMAGE             COMMAND                  CREATED              STATUS              PORTS                          NAMES
f596f5b00305   kodcloud/kodbox   "/entrypoint.sh /usr…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 9000/tcp   kodbox_app_1
5f94f6d1aabb   mariadb           "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp                       kodbox_db_1
e6296b23fb0a   redis:alpine      "docker-entrypoint.s…"   About a minute ago   Up About a minute   6379/tcp                       kodbox_redis_1

#如果需要停止服务
$ docker-compose down
#下面是输出内容
Stopping kodbox_app_1   ... done
Stopping kodbox_db_1    ... done
Stopping kodbox_redis_1 ... done
Removing kodbox_app_1   ... done
Removing kodbox_db_1    ... done
Removing kodbox_redis_1 ... done
Removing network kodbox_default

#因为数据库和kodbox已经挂载了持久化目录,需要时可以重新启动,不用担心数据丢失
$ docker-compose up -d

4. 访问服务器 http://IP地址:[映射端口],在网页填写配置,完成初始化。

其他

通过环境变量自动配置

kodbox容器支持通过环境变量自动配置。您可以在首次运行时预先配置安装页面上要求的所有内容。要启用自动配置,请通过以下环境变量设置数据库连接。

MYSQL/MariaDB:

  • MYSQL_DATABASE 数据库名称.
  • MYSQL_USER 数据库用户.
  • MYSQL_PASSWORD 数据库用户密码.
  • MYSQL_SERVER 数据库服务地址.
  • MYSQL_PORT 数据库端口,默认3306

如果设置了任何值,则在首次运行时不会在安装页面中询问这些值。通过使用数据库类型的所有变量完成配置后,您可以通过设置管理员和密码(仅当您同时设置这两个值时才有效)来配置kodbox实例:

  • KODBOX_ADMIN_USER 管理员用户名,可以不设置,访问网页时自己填.
  • KODBOX_ADMIN_PASSWORD 管理员密码,可以不设置,访问网页时自己填.

redis/memcached:

  • SESSION_TYPE 缓存类型,默认redis,仅当配置SESSION_HOST时生效.
  • SESSION_HOST 缓存地址.
  • SESSION_PORT 缓存端口,默认6379,仅当配置SESSION_HOST时生效.
    11 天 后

    dragonfly ../app/autoload.php[2]; Redis->get();
    NOAUTH Authentication required.
    redis设置了密码然后连不上,,数据库应该是没有吧端口开出来我连我自己的数据库就能行了

    7 天 后

    dragonfly 我是零基础,就是直接将你的代码执行了,里面建立的目录是在外接U盘上,实际的硬盘是与系统盘独立的,想把安装空间映射到硬盘上,但是不知道怎么修改你的docker命令!

    1 个月 后

    为什么在docker-compose.yml里配置kodbox的volumes为- d:/kodbox:/var/www/html或者d:\kodbox:/var/www/html,kodbox的页面打不开呢???

      1 个月 后
      1 个月 后

      亲,php-fpm的版本,能出一个支持arm64v8的版本吗?现在在N1上部署kodbox很流行,强烈建议能出一个适配arm64v8的,造福大家,谢谢

        telanx 怎么不用默认的nginx+fpm的,单fpm版本你是配合什么使用的,也是nginx的docker吗

        ofuJD5iOLYsTaqMc3XL55y7BOdVE 你是使用docker-compose启动的吗 数据库好像有问题,检查下初始化文件./mysql-init-files:/docker-entrypoint-initdb.d/mysql.sql 存在吗

        2 个月 后
        2 个月 后

        如果修改了映射端口,哪里配置需要修改呢大佬