Snipe-it 은 자산관리 프로그램 오픈소스로 mariadb와 연동되며 설치시에 mariadb + snipe-it 두개의 컨테이너가 필요하다.
환경
OS
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
Docker Version
$ docker version
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7d71120/1.13.1
Built: Wed Mar 2 15:25:43 2022
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-209.git7d71120.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7d71120/1.13.1
Built: Wed Mar 2 15:25:43 2022
OS/Arch: linux/amd64
Experimental: false
mariadb 설치
mariadb 이미지는 현재 최신버전(11.0.2) 이 아래와 같은 에러가 발생하며 restart를 반복하여 이전버전을 사용했다.
2023-07-18 08:27:46+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.0.2+maria~ubu2204 started.
2023-07-18 08:27:46+00:00 [ERROR] [Entrypoint]: mariadbd failed while attempting to check config
command was: mariadbd --verbose --help
Can't initialize timers
mariadb data 디렉토리 생성
- volume mount를 통해 mariadb 컨테이너의 data 경로로 사용 된다.
$ mkdir /opt/mariadb-data
mariadb:10.7.4 다운로드
$ docker pull mariadb:10.7.4
docker 실행
- MYSQL_ROOT_PASSWORD=<password> : root의 password 입력
$ docker run -d -p 3306:3306 --name=mariadb --restart=always -v /opt/mariadb-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<password> mariadb:10.7.4
참조. root password 변경
$ docker exec -it mariadb /bin/bash
$ mysql -u root -p
> set password=password('<password>');
docker network 생성
snipe-it, mariadb 에서 사용할 docker network 생성한다.
$ docker network create snipe-it
mariadb 를 snipe-it 네트워크에 연결한다.
$ docker network connect snipe-it mariadb
database 생성 및 권한 설정
snite-it 에서 사용할 데이터베이스와 계정 및 권한 설정한다.
- database : snipeit
- user : snipeit
- password : snipeit
$ docker exec -it mariadb /bin/bash
$ mysql -u root -p
> CREATE DATABASE snipeit;
> CREATE USER 'snipeit'@'%' IDENTIFIED BY 'snipeit';
> GRANT ALL PRIVILEGES ON snipeit.* TO 'snipeit'@'%';
> FLUSH PRIVILEGES;
snipe-it 설치
- 네트워크는 snipe-it 에 연결
- 환경변수 NGINX_APP_URL은 <local host IP>:<포트> 형식이나 80 default port 를 사용할 예정이므로 생략했다.
- MYSQL 관련 환경 변수는 앞서 설정했던 mariadb의 정보를 입력한다.
$ docker run -d \
--name=snipe-it \
--network=snipe-it \
-e NGINX_APP_URL=172.16.10.102 \
-e MYSQL_PORT_3306_TCP_ADDR=mariadb \
-e MYSQL_PORT_3306_TCP_PORT=3306 \
-e MYSQL_DATABASE=snipeit \
-e MYSQL_USER=snipeit \
-e MYSQL_PASSWORD='snipeit' \
-e APP_TIMEZONE=Asia/Seoul \
-p 80:80 \
-v /opt/snipe-it/config:/config \
--restart unless-stopped \
linuxserver/snipe-it
설치확인
docker 컨테이너 정보
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
94c23f639c3b linuxserver/snipe-it "/init" 8 minutes ago Up 8 minutes 0.0.0.0:80->80/tcp, 443/tcp snipe-it
e2ece6b1f4a8 mariadb:10.7.4 "docker-entrypoint..." 10 minutes ago Up 10 minutes 0.0.0.0:3306->3306/tcp mariadb
docker network 정보
docker network inspect snipe-it
[
{
"Name": "snipe-it",
"Id": "78d14c8cf24968340fe6f967c2ee6cbb916d53ab69d82dc1e96a7f0965baf685",
"Created": "2023-07-18T17:58:09.548253561+09:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Containers": {
"94c23f639c3bcb04062745d5bd76600772b8870c16df0c397188838d0109d504": {
"Name": "snipe-it",
"EndpointID": "9708ccbfa7545315828174fd7c3d12d03b6b6c66133fe3d810cddd887748596e",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"e2ece6b1f4a81f50dfc0411a84ba0702c547f8096a983514cb5c779dfba66b16": {
"Name": "mariadb",
"EndpointID": "483d19fb42ff3a5b63b4f1c8d4017d219d06c7d2dbd7855f61786fae3b68ed88",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
웹접속 및 설정
snipe-it 설치 시 환경변수 NGINX_APP_URL 로 접속한다.
http://172.16.10.102
Next를 클릭하면 database 가 설치 된다.
사용자 설정을 통해 설치를 마무리 한다.