LoginSignup
1
1

docker-composeでコンテナ作成(netbox)

Last updated at Posted at 2024-01-04

6年前にCentOS7.6で構築した検証環境をubuntu22.04.3TLSへ移行するのでメモ

環境

仮想化:VMware Workstation-playre17またはVMware workstation-pro17
ホスト:Windows10またはWindows11pro(どちらも確認済み)
ゲスト:ubuntu22.04.3TLS
↓環境構築時メモ
VMでWindowsホストにUbuntuをゲスト起動する
dockerコンテナ環境作成

docker-composeでNetBoxコンテナ作成

ユーザーのホームディレクトリに移動
$ cd
Netbox DockerのリリースブランチをGitでクローン
$ git clone -b release https://github.com/netbox-community/netbox-docker.git
クローンしたディレクトリに移動
$ cd netbox-docker
docker-compose.ymlを別名でバックアップ保存
$ mv docker-compose.yml docker-compose.yml.org
vi docker-compose.yml(以下コピペ、8082は他と競合しないportを適宜指定)
version: '3.4'
services:
  netbox: 
    ports:
      - 8082:8080
    image: docker.io/netboxcommunity/netbox:${VERSION-v3.7-2.8.0}
    depends_on:
    - postgres
    - redis
    - redis-cache
    env_file: env/netbox.env
    user: 'unit:root'
    healthcheck:
      start_period: 120s
      timeout: 30s
      interval: 15s
      test: "curl -f http://localhost:8080/api/ || exit 1"
    volumes:
    - ./configuration:/etc/netbox/config:z,ro
    - netbox-media-files:/opt/netbox/netbox/media:rw
    - netbox-reports-files:/opt/netbox/netbox/reports:rw
    - netbox-scripts-files:/opt/netbox/netbox/scripts:rw
  netbox-worker:
    image: docker.io/netboxcommunity/netbox:${VERSION-v3.7-2.8.0}
    depends_on:
      netbox:
        condition: service_healthy
    env_file: env/netbox.env
    user: 'unit:root'
    command:
      - /opt/netbox/venv/bin/python
      - /opt/netbox/netbox/manage.py
      - rqworker
    volumes:
      - ./configuration:/etc/netbox/config:z,ro
      - netbox-media-files:/opt/netbox/netbox/media:rw
      - netbox-reports-files:/opt/netbox/netbox/reports:rw
      - netbox-scripts-files:/opt/netbox/netbox/scripts:rw
    healthcheck:
      start_period: 20s
      timeout: 3s
      interval: 15s
      test: "ps -aux | grep -v grep | grep -q rqworker || exit 1"
  netbox-housekeeping:
    image: docker.io/netboxcommunity/netbox:${VERSION-v3.7-2.8.0}
    depends_on:
      netbox:
        condition: service_healthy
    env_file: env/netbox.env
    user: 'unit:root'
    command:
      - /opt/netbox/housekeeping.sh
    volumes:
      - ./configuration:/etc/netbox/config:z,ro
      - netbox-media-files:/opt/netbox/netbox/media:rw
      - netbox-reports-files:/opt/netbox/netbox/reports:rw
      - netbox-scripts-files:/opt/netbox/netbox/scripts:rw
    healthcheck:
      start_period: 20s
      timeout: 3s
      interval: 15s
      test: "ps -aux | grep -v grep | grep -q housekeeping || exit 1"
  # postgres
  postgres:
    image: docker.io/postgres:16-alpine
    env_file: env/postgres.env
    volumes:
    - netbox-postgres-data:/var/lib/postgresql/data

  # redis
  redis:
    image: docker.io/redis:7-alpine
    command:
    - sh
    - -c # this is to evaluate the $REDIS_PASSWORD from the env
    - redis-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
    env_file: env/redis.env
    volumes:
    - netbox-redis-data:/data
  redis-cache:
    image: docker.io/redis:7-alpine
    command:
    - sh
    - -c # this is to evaluate the $REDIS_PASSWORD from the env
    - redis-server --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
    env_file: env/redis-cache.env
    volumes:
    - netbox-redis-cache-data:/data

volumes:
  netbox-media-files:
    driver: local
  netbox-postgres-data:
    driver: local
  netbox-redis-cache-data:
    driver: local
  netbox-redis-data:
    driver: local
  netbox-reports-files:
    driver: local
  netbox-scripts-files:
    driver: local

Docker Composeを使ってNetboxをバックグラウンドで起動
$ docker-compose up -d
コンテナの状態を表示、netbox-docker_netbox_1のcontainerIDを確認
$ docker ps -a
CONTAINER ID   IMAGE                               COMMAND                   CREATED              STATUS                        PORTS                                       NAMES
dc5dcd25322b   netboxcommunity/netbox:v3.7-2.8.0   "/usr/bin/tini -- /o…"   About a minute ago   Up About a minute (healthy)                                               netbox-docker_netbox-worker_1
e184fd87abd6   netboxcommunity/netbox:v3.7-2.8.0   "/usr/bin/tini -- /o…"   About a minute ago   Up About a minute (healthy)                                               netbox-docker_netbox-housekeeping_1
93af731470b0   netboxcommunity/netbox:v3.7-2.8.0   "/usr/bin/tini -- /o…"   2 minutes ago        Up 2 minutes (healthy)        0.0.0.0:8082->8080/tcp, :::8082->8080/tcp   netbox-docker_netbox_1
e52d0a21f94e   redis:7-alpine                      "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes                  6379/tcp                                    netbox-docker_redis_1
88f0a6b65429   postgres:16-alpine                  "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes                  5432/tcp                                    netbox-docker_postgres_1
2ccd1707589a   redis:7-alpine                      "docker-entrypoint.s…"   2 minutes ago        Up 2 minutes                  6379/tcp                                    netbox-docker_redis-cache_1
コンテナのシェルにアクセスしてWEBUIのログインユーザを作成
$ sudo docker exec -it <containerID> /bin/sh
$ ./manage.py createsuperuser

ID/mailaddres/PWを設定する

コンテナのシェルを抜ける
$ exit

Netbox WEBUIへアクセス

http://ホストのアドレス:設定したport番号
先程設定したID/PWでログイン
image.png

dockerコマンドメモ

dockerコンテナを起動
$ cd netbox-docker
$ docker-compose up -d
または
$ docker start <container ID>
dockerコンテナを停止(-vオプションはボリュームも削除する場合)
$ cd netbox-docker
$ docker-compose down
$ docker-compose down -v
または
$ docker start <container ID>
dockerコンテナの状態確認とログ確認
$ docker ps -a
$ docker logs <container ID>

その他メモ

  • netboxが完全に起動していないうちにnetbox-housekeepingnetbox-workerが動作することでエラーが出るのでnetboxのhealthcheckのstart_periodとstimeoutは長めに設定。

参考にしたページ

当方の環境での設定log

netbox_ubuntu_install_log 正常ログ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1