使用Docker Toolbox在Mac上建立Redmine
说实话,根据我的经验,如果使用以下方法 brew update && brew upgrade,有时会导致程序无法运行,非常麻烦。但是最近我发现使用虚拟机里的docker容器更方便一些。
因为我只会独自使用,所以后端用sqlite也可以,但我决定使用MariaDB。
创建 Docker Machine
我认为最好将其按用途分开,为Redmine创建一个docker machine。
docker-machine create --driver virtualbox redmine
eval "$(docker-machine env redmine)"
容器群
如果希望快速建立各个容器,并且想要一个能够迅速运行的环境,在操作上可以从最后一个容器开始构建。
MariaDB 容器
如果保持初始设置,则无法使用UTF-8 = 由于无法生成日语票证,因此需要在下一个位置创建设置,并在docker运行时指定。
mkdir -p ~/docker/mariadb/redmine/conf
[mysqld]
character-set-server=utf8
请为 指定一个合适的 root 密码。
docker run \
-d \
--name mariadb \
-v ~/docker/mariadb/redmine/conf:/etc/mysql/conf.d \
-v /var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=<password-for-root> \
-e MYSQL_DATABASE=redmine \
--restart always \
mariadb:latest
为了方便进行备份,数据存储在/var/lib/mysql内,并使用docker volume进行管理。当需要实际进行备份时,可以按照以下步骤进行操作。
docker run --rm --volumes-from mariadb -v $(pwd):/backup centos tar czvf /backup/backup.tar.gz /var/lib/mysql
听说要连接到mysql时必须输入以下命令。 很长。
docker run \
-it \
--link mariadb:mysql \
--rm \
mariadb:latest \
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
要查看日志,需要运行命令 docker logs mariadb。
红宝石容器
有WEBrick版和Passenger版,可以根据个人喜好选择。不得不说,Passenger版可能会稍微快一点。
docker run \
-d \
-p 3000:3000 \
--name redmine \
-v /usr/src/redmine/files \
--link mariadb:mysql \
--restart always \
redmine:passenger
要查看日志,也可以使用 docker logs redmine。
通过运行命令 “docker-machine ip redmine” 可以获取红宝石服务器的 IP 地址,然后使用端口 3000 进行连接。例如,访问 http://192.168.99.101:3000/。
最初的用户是 admin,密码也是 admin。然后只需要通过浏览器进行设置就行了。真方便。
使用Docker Compose半自动化地进行操作。
我之前一直都是用命令行完成到这个地步,但是如果使用Docker Compose,可以将每个容器的选项和依赖关系作为配置保存下来。
以下是两个有关Docker Compose的官方文档链接:
1. Docker Compose 入门指南:https://docs.docker.com/compose/gettingstarted/
2. Docker Compose 文件详解:https://docs.docker.com/compose/compose-file/
Docker Toolbox 集成了 Docker Compose,非常方便地使用它。
可以将下面的内容保存为 ~/docker/redmine/docker-compose.yml 文件中。
mariadb:
image: mariadb:latest
container_name: mariadb
volumes:
- ~/docker/mariadb/redmine/conf:/etc/mysql/conf.d
- /usr/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: <password for root>
MYSQL_DATABASE: redmine
restart: always
redmine:
image: redmine:passenger
container_name: redmine
ports:
- 3000:3000
volumes:
- /usr/src/redmine/files
links:
- mariadb:mysql
restart: always
所以,当在 “~/docker/redmine/” 目录下执行 docker-compose up -d 时,所有的东西都会很好地启动起来。