之前豆子在公司配置了Snipe IT的容器。Docker的配置命令很简单
配置Mysql数据库
docker run \
--name snipe-mysql \
-d \
-e MYSQL_ROOT_PASSWORD="Ylh16888test" \
-e MYSQL_DATABASE=snipe \
-e MYSQL_USER=snipe \
-e MYSQL_PASSWORD="Ylh16888test" \
-e TZ=America/Chicago \
-p 127.0.0.1:3306:3306 \
-v /media/snipe-mysql:/var/lib/mysql \
mysql:5.6 --sql-mode=""
配置web 服务器
docker create \
--name=snipe-it \
--link snipe-mysql:db \
-e PUID=1000 \
-e PGID=1000 \
-e DB_CONNECTION=mysql \
-e DB_HOST=snipe-mysql \
-e DB_DATABASE=snipe \
-e DB_USERNAME=snipe \
-e DB_PASSWORD="Ylh16888test" \
-e APP_KEY=base64:5U/KPKw1GN/Rz0fWYO/4FsSOqjmjvDAQzMCqwcAqstc= \
-p 8082:80 \
-v /media/snipe-conf:/config \
--restart unless-stopped \
snipe/snipe-it
运行web 服务器
docker start snipe-it
我把他改成了对应的docker-compose 文件, 有几个小小的心得记录一下
https://github.com/beanxyz/dockercompose
首先,我把snipe/snipe-it 这个镜像文件重新用Dockerfile写了一遍,目的是加入docker-compose-wait的这个小插件,这样我可以指定等待Mysql数据库完全起来之后,再执行我的web服务器,否则会报错找不到数据库。
第二个小问题是这个最新的镜像有个小bug,需要刷新一下数据库的权限。因此刚开始配置完了以后没工作我还以为是我的问题,后来在github上找到了其他人的答复。https://github.com/snipe/snipe-it/issues/8541
第三点是注意使用volume而不是bind mount,因为如果是共享文件的话,其他人未必有bind mount指定的目录
第四点是我需要传入一个API key,但是为了安全起见,应该是放在 docker-compose的.env 文件里面,而且应该放在.gitignore里面,这样不会暴露在公共的repository里面。
精彩评论