Skip to content

docker image snipe/snipe-it:v8.0.4-alpine not applying APP_PORT #16809

Open
@JunoD-G

Description

@JunoD-G

Following the docker Installation Guide, the initial setup page is not being served on the port specified in APP_PORT environment variable.

Steps to re-produce:

  1. Using the following .env
# --------------------------------------------
# REQUIRED: DOCKER SPECIFIC SETTINGS
# --------------------------------------------
APP_VERSION=
APP_PORT=8000

# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
APP_ENV=production
APP_DEBUG=false
# Please regenerate the APP_KEY value by calling `docker compose run --rm app php artisan key:generate --show`. Copy paste the value here
APP_KEY=base64:sc6n74UtiuzQAlkk7vyX97rjts5C+OU6c+KLnL+EYn0=
APP_URL=http://dock08.localdomain.internal:8000
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ identifier
APP_TIMEZONE='America/Chicago'
APP_LOCALE=en-US
MAX_RESULTS=500

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

# --------------------------------------------
# REQUIRED: DATABASE SETTINGS
# --------------------------------------------
DB_CONNECTION=mysql
DB_HOST=mysqldb
DB_PORT='3306'
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=REDACTED
MYSQL_ROOT_PASSWORD=REDACTED
DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_DUMP_SKIP_SSL=true
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
DB_SSL_VERIFY_SERVER=null

# --------------------------------------------
# REQUIRED: OUTGOING MAIL SERVER SETTINGS
# --------------------------------------------
MAIL_MAILER=smtp
MAIL_HOST=smtprelay.localdomain.internal
MAIL_PORT=587
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_TLS_VERIFY_PEER=true
[email protected]
MAIL_FROM_NAME='Testin-Snipe-IT'
[email protected]
MAIL_REPLYTO_NAME='Testin-Snipe-IT'
MAIL_AUTO_EMBED_METHOD='attachment'

# --------------------------------------------
# REQUIRED: DATA PROTECTION
# --------------------------------------------
ALLOW_BACKUP_DELETE=false
ALLOW_DATA_PURGE=false

# --------------------------------------------
# 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: CHANGE PHP UPLOAD LIMITS (UNCOMMENT WHEN NEEDING TO BE CHANGED)
# --------------------------------------------
#PHP_UPLOAD_LIMIT=10
#PHP_POST_MAX_SIZE=10
#PHP_UPLOAD_MAX_FILESIZE=10
#PHP_MEMORY_LIMIT=10


# --------------------------------------------
# OPTIONAL: SESSION SETTINGS
# --------------------------------------------
SESSION_LIFETIME=12000
EXPIRE_ON_CLOSE=false
ENCRYPT=false
COOKIE_NAME=snipeit_session
COOKIE_DOMAIN=null
SECURE_COOKIES=false
API_TOKEN_EXPIRATION_YEARS=40

# --------------------------------------------
# OPTIONAL: SECURITY HEADER SETTINGS
# --------------------------------------------
#APP_TRUSTED_PROXIES=10.10.20.193
#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=null
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
APP_FORCE_TLS=false
GOOGLE_MAPS_API=
LDAP_MEM_LIM=500M
LDAP_TIME_LIM=600

And the following docker-compose.yml

networks:
  test-si:

services:
  app:
    depends_on:
      db:
        condition: service_healthy
        restart: true
    env_file:
      - .env
    image: snipe/snipe-it:v8.0.4-alpine
    networks:
      - test-si
    ports:
      - "${APP_PORT:-8000}:8000"
      - "80:80"
    privileged: true
    restart: no
    volumes:
      - storage:/var/lib/snipeit

  db:
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MARIADB_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 5s
      timeout: 1s
      retries: 5
    hostname: ${DB_HOST}
    image: mariadb:11.5.2
    networks:
      - test-si
    restart: unless-stopped
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
  storage:
  1. Check that the containers came up docker ps
  2. Check that the environment variables are passed into the container
docker exec -ti testing-snipeit-app-1 printenv

lists out:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=fd6fc7042d78
TERM=xterm
APP_FORCE_TLS=false
PUBLIC_AWS_BUCKET_ROOT=null
DB_COLLATION=utf8mb4_unicode_ci
PUBLIC_AWS_SECRET_ACCESS_KEY=null
PUBLIC_FILESYSTEM_DISK=local_public
QUEUE_DRIVER=sync
DB_SSL_KEY_PATH=null
AWS_DEFAULT_REGION=null
MAIL_BACKUP_NOTIFICATION_DRIVER=null
MAIL_TLS_VERIFY_PEER=true
ENCRYPT=false
PRIVATE_AWS_BUCKET_ROOT=null
COOKIE_NAME=snipeit_session
DB_SSL_CERT_PATH=null
DB_PREFIX=null
IMAGE_LIB=gd
GOOGLE_MAPS_API=
SESSION_DRIVER=file
DB_CHARSET=utf8mb4
MAIL_USERNAME=null
MAIL_PORT=587
DB_SSL_CIPHER=null
LDAP_TIME_LIM=600
PRIVATE_AWS_SECRET_ACCESS_KEY=null
DB_PORT=3306
[email protected]
PRIVATE_AWS_ACCESS_KEY_ID=null
SESSION_LIFETIME=12000
LOGIN_MAX_ATTEMPTS=5
PUBLIC_AWS_URL=null
BACKUP_ENV=true
SECURE_COOKIES=false
DB_SSL_CA_PATH=null
APP_VERSION=
DB_HOST=mysqldb
MEMCACHED_HOST=null
MAIL_FROM_NAME=Testin-Snipe-IT
APP_LOCALE=en-US
APP_URL=http://dock08.localdomain.internal:8000
REDIS_PASSWORD=null
[email protected]
MAIL_HOST=smtprelay.localdomain.internal
DB_SSL_IS_PAAS=false
EXPIRE_ON_CLOSE=false
DB_SSL_VERIFY_SERVER=null
LDAP_MEM_LIM=500M
APP_LOCKED=false
REDIS_HOST=null
PUBLIC_AWS_DEFAULT_REGION=null
DB_SSL=false
ALLOW_BACKUP_DELETE=false
CACHE_PREFIX=snipeit
PRIVATE_AWS_BUCKET=null
LOG_CHANNEL=stderr
MAIL_AUTO_EMBED_METHOD=attachment
PUBLIC_AWS_BUCKET=null
PRIVATE_FILESYSTEM_DISK=local
MAIL_MAILER=smtp
APP_TIMEZONE=America/Chicago
LOG_MAX_DAYS=10
MEMCACHED_PORT=null
MAX_RESULTS=500
REDIS_PORT=6379
APP_DEBUG=false
AWS_SECRET_ACCESS_KEY=null
APP_PORT=8000
MAIL_BACKUP_NOTIFICATION_ADDRESS=null
COOKIE_DOMAIN=null
API_TOKEN_EXPIRATION_YEARS=40
DB_CONNECTION=mysql
RESET_PASSWORD_LINK_EXPIRES=900
APP_KEY=base64:sc6n74UtiuzQAlkk7vyX97rjts5C+OU6c+KLnL+EYn0=
DB_DUMP_SKIP_SSL=true
APP_ENV=production
PUBLIC_AWS_ACCESS_KEY_ID=null
CACHE_DRIVER=file
AWS_ACCESS_KEY_ID=null
MYSQL_ROOT_PASSWORD=REDACTED
DB_DUMP_PATH=/usr/bin
DB_PASSWORD=REDACTED
MAIL_REPLYTO_NAME=Testin-Snipe-IT
DB_DATABASE=snipeit
LOGIN_LOCKOUT_DURATION=60
DB_USERNAME=snipeit
PRIVATE_AWS_DEFAULT_REGION=null
PRIVATE_AWS_URL=null
ALLOW_DATA_PURGE=false
APP_CIPHER=AES-256-CBC
MAIL_PASSWORD=null
HOME=/root
  1. Check the web ui on designated port 8000
docker exec -ti testing-snipeit-app-1 curl http://dock08.localdomain.internal:8000

results in

curl: (56) Recv failure: Connection reset by peer
  1. Check the web ui on port 80
docker exec -ti testing-snipeit-app-1 curl http://dock08.localdomain.internal

shows

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="refresh" content="0;url='http://dock08.localdomain.internal:8000/setup'" />

        <title>Redirecting to http://dock08.localdomain.internal:8000/setup</title>
    </head>
    <body>
        Redirecting to <a href="http://dock08.localdomain.internal:8000/setup">http://dock08.localdomain.internal:8000/setup</a>.
    </body>
</html>
  1. Looking at the apache2 configuration folder, and files, everything points to only port 80 being served.
docker exec -ti testing-snipeit-app-1 cat /etc/apache2/conf.d/default.conf | grep -v "^\s*\#" | grep -v "^\s*\$"

Shows

<VirtualHost *:80>
...
</VirtualHost>

And

docker exec -ti testing-snipeit-app-1 cat /etc/apache2/httpd.conf | grep -v "^\s*\#" | grep -v "^\s*\$"

Shows the apache service only listening on port 80, not 8000

ServerTokens OS
ServerRoot /var/www
Listen 80
...

The expected behavior:
The setup page be hosted on the configured APP_PORT. Hopefully it is a simple flag or configuration that was missed.

We have a working Snipe-IT using snipe/snipe-it:v7.1.15. In that version there was no APP_PORT.

The goal is to migrate the data from the 7.1.15 to 8.0.4.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions