Open
Description
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:
- 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:
- Check that the containers came up
docker ps
- 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
- 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
- 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>
- 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.