Docker安装Snipe-IT

Docker安装Snipe-IT

Centos7安装Snipe-IT,由于没有科学上网克隆GitHub项目时报错Failed to connect to github.com port 443: Connection refused。改为Docker安装。以下是Docker安装Snipe-IT的过程。如果您可以科学上网还是报错,可以添加代理。
1.本地开启科学上网代理.
2.配置git代理,需要查看科学上网的地理端口和地址。

git config --global http.proxy http://127.0.0.1:55615
git config --global https.proxy http://127.0.0.1:55616

3.查看代理设置

git config --global --get http.proxy
git config --global --get https.proxy

4.取消代理设置

git config --global --unset http.proxy
git config --global --unset https.proxy

一、下载Centos7镜像。
1.找一个国内源镜像,拉取速度会快一些,可以免去设置yum源的问题,这里我下载了阿里云镜像。
阿里云镜像下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/
在这里插入图片描述
二、安装Docker
1.验证Linux内核,Docker 要求 CentOS 系统的内核版本高于 3.10

 uname -r 

2.更新yum,对软件和依赖进行更新。

sudo yum update

3.卸载系统中可能安装的 Docker和低版本 ,防止版本冲突导致安装失败。

sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

4.安装Docker所需依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5.设置Docker yum源为阿里云源,可以加速拉取速度。

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  ##官方源

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   ##阿里源

6.安装Docker和Docker-cli

sudo yum install -y docker-ce docker-ce-cli containerd.io

如果安装报错 命令后加 –allowerasing

sudo yum install -y docker-ce docker-ce-cli containerd.io --allowerasing

7.验证Docker是否安装成功
启动docker

sudo systemctl start docker

查看Docker服务状态 running 就是启动成功

sudo systemctl status docker

在这里插入图片描述
8.查看Docker版本信息

docker version 
docker -v

两个命令任意即可 查看Docker版本 ,出现如下回显表明安装成功
在这里插入图片描述
9.设置Docker服务开机自启动

sudo systemctl enable docker

10.测试Docker拉取镜像

docker run centos /bin/echo 'hello word!'

11.配置 docker阿里云容器镜像服务镜像加速,登录阿里云控制台找到镜像加速服务,选择Centos

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docke

将代码中的xxxxxx,改为自己的镜像加速地址。
在这里插入图片描述
PS: 配置完成后会拉取镜像 可能会报守护进程找不到 卸载docke重新安装 不配置镜像加速,如果是虚拟机安装,在配置镜像加速前设置一个还原点或是快照。

****三、部署 Snipe-IT准备
1.Snipe-IT需要先拉取mysql和snipe-it 镜像,拉取mysql镜像,这里使用了mysql 8.0和snipe-it6.1.0。

docker pull mysql:8.0
docker pull snipe/snipe-it:v6.1.0

2.生成应用密钥 app_key,key需要配置在.env.docker中。

docker run --rm snipe/snipe-it

这就是生成的key,.env.docker需要配置base64:后面的字符串 。
”Please re-run this container with an environment variable $APP_KEY
An example APP_KEY you could use is:
base64:7NZr+F1xN/4GxBI/xpHEy+4xdLPCEkCguWdyuLg2LnQ= “

3.下载官方源码包
https://github.com/snipe/snipe-it/releases/tag/v6.1.0

参考文档链接
官网参考文档,https://snipe-it.readme.io/docs/upgrading
下载源码包,然后解压,找到其中的 .env .docker docker-compose.yaml 文件,这两个文件是最主要的。
4.上传源码包
打开cmd

scp C:\Users\Administrator\Desktop\snipe-it-6.1.0.zip root@192.168.1.199:/root

将下载的文件传送到linux系统中,C:\Users\Administrator\Desktop\snipe-it-6.1.0.zip 这里是源码的下载位置。
在这里插入图片描述
github下载有的时候需要科学上网,有时候不用,看运气。如果没有下载成功,我上传上来了。
链接:https://pan.baidu.com/s/1idpNPW2QnN0h7nthhgpTpw
提取码:lz8q

切换回linu中,查看文件是否上传上来了
在这里插入图片描述
5.解压源码包

sudo yum -y install unzip  ##如果没有zip的解压工具需要安装unzip
unzip snipe-it-6.1.0.zip

备份这两个文件,以免操作失误导致不能使用。

cp .env.docker docker-compose.yml /root

6.编辑配置文件
进入到解压目录编辑这两个文件.env .docker docker-compose.yaml 。需要安装一个vim编辑器,vi不支持全选删除。
安装vim

sudo yum -y install vim 

编辑.env .docker

vim .env.docker

输入ggdG将文档清空,将下面的代码复制进来,需要注意的是数据库名和密码修改为所需要的,APP_KEY=base64:需要将上面生成的粘贴进来,要与生成的key保持一致。宿主机地址可以设置为IP和域名

# --------------------------------------------
# REQUIRED: DB SETUP
# --------------------------------------------
# 当数据库使用mysql的时候的配置
MYSQL_PORT_3306_TCP_ADDR=mysql
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_DATABASE=snipeit_data
MYSQL_USER=snipeit
MYSQL_PASSWORD=123456
MYSQL_ROOT_PASSWORD=123456
# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
#环境需要设置成生产环境
APP_ENV=production
#需要关掉debug
APP_DEBUG=false
# please regenerate the APP_KEY value by calling `docker-compose run --rm snipeit bash` and then `php artisan key:generate --show` and then copy paste the value here

#需要使用生成的key 
APP_KEY=base64:7NZr+F1xN/4GxBI/xpHEy+4xdLPCEkCguWdyuLg2LnQ=
#设置链接,这个要设置宿主机的IP地址,如果是域名,也需要把域名解析到宿主机上
APP_URL=http://192.168.1.199
APP_TIMEZONE='Asia/Shanghai'
APP_LOCALE=zh-CN
MAX_RESULTS=1000
#每分钟访问限制
API_THROTTLE_PER_MINUTE=2000

# --------------------------------------------
# REQUIRED: UPLOADED FILE STORAGE SETTINGS
# --------------------------------------------
PRIVATE_FILESYSTEM_DISK=local
PUBLIC_FILESYSTEM_DISK=local_public

# --------------------------------------------
# REQUIRED: DATABASE SETTINGS
# --------------------------------------------
#设置数据库部分
DB_CONNECTION=mysql
DB_HOST=mysql
DB_DATABASE=snipeit_data
DB_USERNAME=snipeit
DB_PASSWORD=123456
DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

# --------------------------------------------
# OPTIONAL: SSL DATABASE SETTINGS
# --------------------------------------------
DB_SSL=false
DB_SSL_IS_PAAS=false
DB_SSL_KEY_PATH=null
DB_SSL_CERT_PATH=null
DB_SSL_CA_PATH=null
DB_SSL_CIPHER=null

# --------------------------------------------
# REQUIRED: OUTGOING MAIL SERVER SETTINGS
# --------------------------------------------
#设置邮箱部分
MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=xxxxxxxx@163.com
MAIL_PASSWORD=xxxxxxxxxxxxxx
MAIL_ENCRYPTION=null
MAIL_FROM_ADDR=xxxxxxxxxxxxx@163.com
MAIL_FROM_NAME='Snipe-IT-From'
MAIL_REPLYTO_ADDR=xxxxxxxxxxx@163.com
MAIL_REPLYTO_NAME='Snipe-IT-Replyto'
MAIL_AUTO_EMBED_METHOD='attachment'

# --------------------------------------------
# REQUIRED: IMAGE LIBRARY
# This should be gd or imagick
# --------------------------------------------
IMAGE_LIB=gd


# --------------------------------------------
# OPTIONAL: BACKUP SETTINGS
# --------------------------------------------
MAIL_BACKUP_NOTIFICATION_DRIVER=null
MAIL_BACKUP_NOTIFICATION_ADDRESS=null
BACKUP_ENV=true


# --------------------------------------------
# OPTIONAL: SESSION SETTINGS
# --------------------------------------------
# 指定会话应保持有效的时间(以分钟为单位)。
SESSION_LIFETIME=12000
# 指定当用户关闭浏览器窗口时登录的会话是否应过期。
EXPIRE_ON_CLOSE=false
# 指定您是否希望在 Snipe-IT 会话中使用加密 cookie。
ENCRYPT=false
COOKIE_NAME=snipeit_session
COOKIE_DOMAIN=null
SECURE_COOKIES=false
API_TOKEN_EXPIRATION_YEARS=40

# --------------------------------------------
# OPTIONAL: SECURITY HEADER SETTINGS
# --------------------------------------------
APP_TRUSTED_PROXIES=192.168.1.1,10.0.0.1
ALLOW_IFRAMING=false
REFERRER_POLICY=same-origin
ENABLE_CSP=false
CORS_ALLOWED_ORIGINS=null
ENABLE_HSTS=false

# --------------------------------------------
# OPTIONAL: CACHE SETTINGS
# --------------------------------------------
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
CACHE_PREFIX=snipeit

# --------------------------------------------
# OPTIONAL: REDIS SETTINGS
# --------------------------------------------
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

# --------------------------------------------
# OPTIONAL: MEMCACHED SETTINGS
# --------------------------------------------
MEMCACHED_HOST=null
MEMCACHED_PORT=null

# --------------------------------------------
# OPTIONAL: PUBLIC S3 Settings
# --------------------------------------------
PUBLIC_AWS_SECRET_ACCESS_KEY=null
PUBLIC_AWS_ACCESS_KEY_ID=null
PUBLIC_AWS_DEFAULT_REGION=null
PUBLIC_AWS_BUCKET=null
PUBLIC_AWS_URL=null
PUBLIC_AWS_BUCKET_ROOT=null

# --------------------------------------------
# OPTIONAL: PRIVATE S3 Settings
# --------------------------------------------
PRIVATE_AWS_ACCESS_KEY_ID=null
PRIVATE_AWS_SECRET_ACCESS_KEY=null
PRIVATE_AWS_DEFAULT_REGION=null
PRIVATE_AWS_BUCKET=null
PRIVATE_AWS_URL=null
PRIVATE_AWS_BUCKET_ROOT=null

# --------------------------------------------
# OPTIONAL: AWS Settings
# --------------------------------------------
AWS_ACCESS_KEY_ID=null
AWS_SECRET_ACCESS_KEY=null
AWS_DEFAULT_REGION=null

# --------------------------------------------
# OPTIONAL: LOGIN THROTTLING
# --------------------------------------------
LOGIN_MAX_ATTEMPTS=5
LOGIN_LOCKOUT_DURATION=60
RESET_PASSWORD_LINK_EXPIRES=900

# --------------------------------------------
# OPTIONAL: MISC
# --------------------------------------------
LOG_CHANNEL=stderr
LOG_MAX_DAYS=10
APP_LOCKED=false
APP_CIPHER=AES-256-CBC
GOOGLE_MAPS_API=
LDAP_MEM_LIM=500M
LDAP_TIME_LIM=600


# 允许清除已删除信息
ALLOW_DATA_PURGE=true
# 允许删除备份
ALLOW_BACKUP_DELETE=true


编辑docker-compose.yaml

vim docker-compose.yaml 

输入ggdG将文档清空,将下面的代码复制进来,需要注意的是数据库名和密码要与上面一致。这里要注意以下,如果对snipr-it和mysql规划端口的话,下面的端口也要与docker的一致。

version: '3'

services:
  snipeit:
    container_name: snipeit
    image: snipe/snipe-it:v6.1.0
    restart: always
    ports:
    - "80:80"
    volumes:
    - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    - ./logs:/var/www/html/storage/logs
    - ./snipe-vol:/var/lib/snipeit
    depends_on:
    - mysql
    env_file:
    - .env.docker
    networks:
    - snipeit-backend
  mysql:
    image: mysql:8.0
    container_name: mysql
    ports:
      - 3306:3306
    restart: always
    volumes:
      - ./db:/var/lib/mysql
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      #允许空密码
      #MYSQL_ALLOW_EMPTY_PASSWORD: yes
      #新建数据库
      MYSQL_DATABASE: snipeit_data
      #新建用户
      MYSQL_USER: snipeit
      #设置用户密码
      MYSQL_PASSWORD: 123456
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    networks:
    - snipeit-backend
networks:
  snipeit-backend:

这里要注意一下:.env.docker文件需要与docker-compose.yaml文件保持在同目录下。到这里准备工作就已经完成了。

四、部署
1.创建并启动容器

docker compose up -d

在这里插入图片描述

运行docker-compose.yaml文件时,数据库初始化完成,但 snipe-it 可能无法正常初始化,数据库无法创建表。需要重启 compose。

docker compose restart

定位问题时可以查看日志。

docker compose logs -f

2.进入容器赋予权限

docker compose exec snipeit bash
chmod -R 777 storage
chmod -R 777 public/uploads
chmod -R 777 bootstrap/cache

到这里就部署完成了,访问http://自己的IP或是域名,进行Snipe-IT配置。

五、Snipe-IT配置
1.初始化配置
在这里插入图片描述
在这里插入图片描述
到这里Snipe-IT 就安装完成了。
六、系统备份界面报错
在这里插入图片描述

是数据库权限问题,进入数据库修改权限

docker exec -it mysql mysql -uroot -p123456

修改权限


GRANT RELOAD, LOCK TABLES ON *.* TO 'snipeit'@'%';
FLUSH PRIVILEGES;

到这里就完成了Snipe-IT系统的安装就可以进行资产的管理了。
在这里插入图片描述

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l1677516854

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值