配置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里面。
?
原文:https://blog.51cto.com/beanxyz/2690703