1.5. Docker 启动

未匹配的标注

Github: github.com/bigfile/bigfile

Docker 部署

我们构建了 Docker 镜像,以便广大 Docker 爱好者能够快速的使用 Bigfile,这里是我们的官方镜像仓库:hub.docker.com/r/bigfile/bigfile

创建证书

Bigfile 为了降低使用 TLS/SSL 的成本,提供了生成证书的命令。我们在 RPC 子命令下提供,但可以用在任何你想用的地方,来做个演示:

docker run -v $(pwd):/certs bigfile/bigfile rpc:make-cert --save-to /certs

Docker 启动

这条命令过后,会在主机上相应的目录下生成 6 个证书文件。以 ca 为前缀的表示证书机构,只有证书机构才具有资质进行签发证书,我们生成的 ca 证书是自签名证书,自签名证书一般不被系统所信任,不过你可以将它加到系统的可信任证书库中。以 server 为前缀的表示服务器证书,服务器证书可以添加可信任 IP,通过参数 --server-cert-ips 指定。以 client 为前缀的用于客户端,这个主要用在 RPC 服务中实现双端验证。.pem 为后缀的表示经过 PEM 编码的证书文件,.key 为后缀的表示证书密钥。

docker-compose

这里提供一个 docker-compose.yml 模板,各位同学可以在使用的自行修改:

version: "3"

services:

  mysql:
    image: mysql
    container_name: "bigfile-mysql"
    networks:
      - bigfile
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: bigfile
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./logs/mysql:/var/log/mysql
    restart: always

  http:
    image: bigfile/bigfile
    volumes:
      - "./server.pem:/certs/server.pem"
      - "./server.key:/certs/server.key"
      - "./storage:/bigfile/storage"
    networks:
      - bigfile
    depends_on:
      - mysql
    entrypoint:
      - /bigfile/bigfile
      - --db-host
      - mysql
      - http:start
      - --cert-file
      - /certs/server.pem
      - --cert-key
      - /certs/server.key
    ports:
      - "10985:10985"
    links:
      - mysql
    restart: always

  ftp:
    image: bigfile/bigfile
    volumes:
      - "./server.pem:/certs/server.pem"
      - "./server.key:/certs/server.key"
      - "./storage:/bigfile/storage"
    networks:
      - bigfile
    depends_on:
      - mysql
    entrypoint:
      - /bigfile/bigfile
      - --db-host
      - mysql
      - ftp:start
      - --cert-file
      - /certs/server.pem
      - --key-file
      - /certs/server.key
      - --passive-ip
      - 127.0.0.1
      - --tls-enable
      - --passive-port-range
      - 52000-52020
    ports:
      - "2121:2121"
      - "52000-52020:52000-52020"
    links:
      - mysql
    restart: always

  rpc:
    image: bigfile/bigfile
    volumes:
      - "./ca.pem:/certs/ca.pem"
      - "./server.pem:/certs/server.pem"
      - "./server.key:/certs/server.key"
      - "./storage:/bigfile/storage"
    networks:
      - bigfile
    depends_on:
      - mysql
    entrypoint:
      - /bigfile/bigfile
      - --db-host
      - mysql
      - rpc:start
      - --server-cert
      - /certs/server.pem
      - --server-key
      - /certs/server.key
      - --ca-cert
      - /certs/ca.pem
    ports:
      - "10986:10986"
    links:
      - mysql
    restart: always

networks:
  bigfile:

保存上面的内容到 docker-compose.yml,然后使用下面的命令启动即可:

docker-compose up -d

Docker 启动

单独启动

如果您不想把所有的服务放在一起,想通过 Docker 单独启动每个服务,可以按照下面的步骤。假设您已经生成了相关证书。我们先来启动 MySQL:

docker run --rm --name bigfile-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=bigfile  mysql

Docker 启动

打开另一个终端,我们来启动 RPC Server,注意第一次启动 Server 的时候会自动创建数据表,可以通过 -p 10986:10986 来映射端口:

docker run --rm -i -t -v $(pwd):/certs --link bigfile-mysql  bigfile/bigfile:v1.0.5 --db-host bigfile-mysql rpc:start --ca-cert /certs/ca.pem --server-cert /certs/server.pem --server-key /certs/server.key

Docker 启动

打开另一个终端,我们来启动 HTTP Server,可以通过 -p 10985:10985 来映射端口:

docker run --rm -i -t -v $(pwd):/certs --link bigfile-mysql  bigfile/bigfile:v1.0.5 --db-host bigfile-mysql http:start --cert-file /certs/server.pem --cert-key /certs/server.key

Docker 启动

打开另一个终端,我们来启动 FTP Server,可以通过 -p 2121:2121 -p 52000-52020:52000-52020 来映射端口:

docker run --rm -i -t -v $(pwd):/certs --link bigfile-mysql  bigfile/bigfile:v1.0.5 --db-host bigfile-mysql ftp:start --cert-file /certs/server.pem --key-file /certs/server.key --passive-ip 127.0.0.1 --tls-enable --passive-port-range 52000-52020

Docker 启动

如果需要保存 Bigfile 的数据,只需将本地的一个目录映射到容器内 /bigifle/storage 目录下(默认),例如,-v $(pwd)/storage:/bigifle/storage

同时启动多个 Server

启动 MySQL:

docker run --rm --name bigfile-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=bigfile  mysql

启动 Bigfile:

docker run --rm -it -v $(pwd)/certs:/certs -v $(pwd)/storage:/bigfile/storage --link bigfile-mysql -p 2121:2121 -p 10985:10985 -p 10986:10986 -p 52100-52110:52100-52110   bigfile/bigfile --db-host bigfile-mysql multi:server --ftp-passive-ip 127.0.0.1 --ftp-passive-port-range 52100-52110 --server-cert /certs/server.pem --server-key /certs/server.key --ca-cert /certs/ca.pem

Docker 启动

英文文档:bigfile.site

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
Michael001
讨论数量: 0
发起讨论 只看当前版本


暂无话题~