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
这条命令过后,会在主机上相应的目录下生成 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
单独启动每个服务,可以按照下面的步骤。假设您已经生成了相关证书。我们先来启动 MySQL:
docker run --rm --name bigfile-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=bigfile mysql
打开另一个终端,我们来启动 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
打开另一个终端,我们来启动 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
打开另一个终端,我们来启动 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
如果需要保存 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
英文文档:bigfile.site
推荐文章: