gpt4 book ai didi

带有 Commandbox 的 Docker-Compose 无法更改 Web 根目录

转载 作者:行者123 更新时间:2023-12-05 02:32:27 25 4
gpt4 key购买 nike

我正在使用 docker-compose 来启动一个命令框 lucee 容器和一个 mysql contianer。

我想更改 lucee 服务器的网络根目录,以隐藏我所有的非公开文件(server.json 等,cfmigrations 资源文件夹)

我已经按照文档更新了我的 server.json https://commandbox.ortusbooks.com/embedded-server/server.json/packaging-your-server

{
"web":{
"webroot":"./public"
}
}

如果我从 Windows 启动服务器(box start 来自 app 文件夹),服务器会从位于 http://localhost 的 ./public 加载我的 index.cfm , 完美。

但是使用这个 .yaml 文件,webroot 不会更改为 ./public 而我的 /app 文件夹的内容是显示,“公共(public)”文件夹在目录列表中可见。

services:
db:
image: mysql:8.0.26
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: cf
MYSQL_USER: $MYSQL_USER
MYSQL_PASSWORD: $MYSQL_PASSWORD
MYSQL_SOURCE: $MYSQL_SOURCE
MYSQL_SOURCE_USER: $MYSQL_SOURCE_USER
MYSQL_SOURCE_PASSWORD: $MYSQL_SOURCE_PASSWORD
volumes:
- ./mysql:/var/lib/mysql
- ./assets/initdb:/docker-entrypoint-initdb.d
- ./assets/sql:/assets/sql

web:
depends_on:
- db
# Post 3.1.0 fails to boot if APP_DIR is set to non /app
# image: ortussolutions/commandbox:lucee5-3.1.0
image: ortussolutions/commandbox:lucee5
# build: .
ports:
- "80:80"
- "443:443"
environment:
- PORT=80
- SSL_PORT=443
- BOX_SERVER_WEB_SSL_ENABLE=true
- BOX_SERVER_WEB_DIRECTORYBROWSING=$CF_DIRECTORY_BROWSING
- BOX_INSTALL=true
- BOX_SERVER_WEB_BLOCKCFADMIN=$CF_BLOCK_ADMIN
- BOX_SERVER_CFCONFIGFILE=/app/.cfconfig.json

# - APP_DIR=/app/public
# - BOX_SERVER_WEB_WEBROOT=/app/public

- cfconfig_robustExceptionEnabled=$CF_ROBOUST_EXCEPTION_ENABLED
- cfconfig_adminPassword=$CF_ADMIN_PASSWORD

- MYSQL_USER=$MYSQL_USER
- MYSQL_PASSWORD=$MYSQL_PASSWORD
- MYSQL_HOST=$MYSQL_HOST
- MYSQL_PORT=$MYSQL_PORT
volumes:
- ./app:/app
- ./assets/mysql-connector-java-8.0.26.jar:/usr/local/lib/CommandBox/lib/mysql-connector-java-8.0.26.jar

这是目录列表:

directory listing of /app folder

这是我的项目结构:

project structure

似乎 server.json 文件或至少 web.webroot 属性被忽略,但我已经尝试了这两种设置,但都没有解决问题

- APP_DIR=/app/public
- BOX_SERVER_WEB_WEBROOT=/app/public

命令框文档建议更改 APP_DIR 以修复 Web 根目录,“APP_DIR - 应用程序目录(Web 根目录)”。 https://hub.docker.com/r/ortussolutions/commandbox/

但如果我这样做,我会收到有关启动脚本位于错误位置的错误,在我看来应该修复它: https://github.com/Ortus-Solutions/docker-commandbox/issues/55

BOX_SERVER_WEB_WEBROOTserver.json 的方式相同(或至少是该属性)。我也尝试设置以下环境变量(大写和小写)并且没有区别,但请记住 server.json 为我更改了 webroot

  • BOX_SERVER_WEB_WEBROOT=./public
  • BOX_SERVER_WEB_WEBROOT=/app/public
  • BOX_SERVER_WEB_WEBROOT=public

Web 容器启动时的输出:

Set verboseErrors = true

INFO: CF Engine defined as lucee@5.3.8+189

INFO: Convention .cfconfig.json found at /app/.cfconfig.json

INFO: Server Home Directory set to: /usr/local/lib/serverHome

√ | Installing ALL dependencies

| √ | Installing package [forgebox:commandbox-cfconfig@1.6.3]

| √ | Installing package [forgebox:commandbox-migrations@3.2.3]

| | √ | Installing package [forgebox:cfmigrations@^2.0.0]

| | | √ | Installing package [forgebox:qb@^8.0.0]

| | | | √ | Installing package [forgebox:cbpaginator@^2.4.0]

+ [[ -n '' ]]

+ [[ -n '' ]]

INFO: Generating server startup script

√ | Starting Server

|------------------------------

| start server in - /app/

| server name - app

| server config file - /app//server.json

| WAR/zip archive already installed.

| Found CFConfig JSON in ".cfconfig.json" file in web root by convention

| .

| Importing luceeserver config from [/app/.cfconfig.json]

| Config transferred!

| Setting OS environment variable [cfconfig_adminPassword] into luceeser

| ver

| [adminPassword] set.

| Setting OS environment variable [cfconfig_robustExceptionEnabled] into

| luceeserver

| [robustExceptionEnabled] set.

| Start script for shell [bash] generated at: /app/server-start.sh

| Server start command:

| /opt/java/openjdk/bin/java

| -jar /usr/local/lib/CommandBox/lib/runwar-4.5.1.jar

| --background=false

| --host 0.0.0.0

| --stop-port 42777

| --processname app [lucee 5.3.8+189]

| --log-dir /usr/local/lib/serverHome//logs

| --server-name app

| --tray-enable false

| --dock-enable true

| --directoryindex true

| --timeout 240

| --proxy-peeraddress true

| --cookie-secure false

| --cookie-httponly false

| --pid-file /usr/local/lib/serverHome//.pid.txt

| --gzip-enable true

| --cfengine-name lucee

| -war /app/

| --web-xml-path /usr/local/lib/serverHome/WEB-INF/web.xml

| --http-enable true

| --ssl-enable true

| --ajp-enable false

| --http2-enable true

| --open-browser false

| --open-url https://0.0.0.0:443

| --port 80

| --ssl-port 443

| --urlrewrite-enable false

| --predicate-file /usr/local/lib/serverHome//.predicateFile.txt

| Dry run specified, exiting without starting server.

|------------------------------

| √ | Setting Server Profile to [production]

| |-----------------------------------------------------

| | Profile set from secure by default

| | Block CF Admin disabled

| | Block Sensitive Paths enabled

| | Block Flash Remoting enabled

| | Directory Browsing enabled

| |-----------------------------------------------------

INFO: Starting server using generated script: /usr/local/bin/startup.sh

[INFO ] runwar.server: Starting RunWAR 4.5.1

[INFO ] runwar.server: HTTP2 Enabled:true

[INFO ] runwar.server: Enabling SSL protocol on port 443

[INFO ] runwar.server: HTTP ajpEnable:false

[INFO ] runwar.server: HTTP warFile exists:true

[INFO ] runwar.server: HTTP warFile isDirectory:true

[INFO ] runwar.server: HTTP background:false

[INFO ] runwar.server: Adding additional lib dir of: /usr/local/lib/serverHome/WEB-INF/lib

[INFO ] runwar.server: ******************************************************************************

[INFO ] runwar.server: Starting - port:80 stop-port:42777 warpath:file:/app/

[INFO ] runwar.server: context: / - version: 4.5.1

[INFO ] runwar.server: web-dirs: ["\/app"]

[INFO ] runwar.server: Log Directory: /usr/local/lib/serverHome/logs

[INFO ] runwar.server: ******************************************************************************

[INFO ] runwar.server: XNIO-Option CONNECTION_LOW_WATER:1000000

[INFO ] runwar.server: XNIO-Option CORK:true

[INFO ] runwar.server: XNIO-Option WORKER_TASK_MAX_THREADS:30

[INFO ] runwar.server: XNIO-Option WORKER_IO_THREADS:8

[INFO ] runwar.server: XNIO-Option TCP_NODELAY:true

[INFO ] runwar.server: XNIO-Option WORKER_TASK_CORE_THREADS:30

[INFO ] runwar.server: XNIO-Option CONNECTION_HIGH_WATER:1000000

[INFO ] runwar.config: Parsing '/usr/local/lib/serverHome/WEB-INF/web.xml'

[INFO ] runwar.server: Extensions allowed by the default servlet for static files: 3gp,3gpp,7z,ai,aif,aiff,asf,asx,atom,au,avi,bin,bmp,btm,cco,crt,css,csv,deb,der,dmg,doc,docx,eot,eps,flv,font,gif,hqx,htc,htm,html,ico,img,ini,iso,jad,jng,jnlp,jpeg,jpg,js,json,kar,kml,kmz,m3u8,m4a,m4v,map,mid,midi,mml,mng,mov,mp3,mp4,mpeg,mpeg4,mpg,msi,msm,msp,ogg,otf,pdb,pdf,pem,pl,pm,png,ppt,pptx,prc,ps,psd,ra,rar,rpm,rss,rtf,run,sea,shtml,sit,svg,svgz,swf,tar,tcl,tif,tiff,tk,ts,ttf,txt,wav,wbmp,webm,webp,wmf,wml,wmlc,wmv,woff,woff2,xhtml,xls,xlsx,xml,xpi,xspf,zip,aifc,aac,apk,bak,bk,bz2,cdr,cmx,dat,dtd,eml,fla,gz,gzip,ipa,ia,indd,hey,lz,maf,markdown,md,mkv,mp1,mp2,mpe,odt,ott,odg,odf,ots,pps,pot,pmd,pub,raw,sdd,tsv,xcf,yml,yaml

[INFO ] runwar.server: welcome pages in deployment manager: [index.cfm, index.lucee, index.html, index.htm]

WARNING: An illegal reflective access operation has occurred

WARNING: Illegal reflective access by org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender (file:/usr/local/lib/serverHome/WEB-INF/lib/lucee.jar) to method java.net.URLClassLoader.addURL(java.net.URL)

WARNING: Please consider reporting this to the maintainers of org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

WARNING: All illegal access operations will be denied in a future release

[INFO ] runwar.server: Direct Buffers: true

[INFO ] runwar.server: ******************************************************************************

[INFO ] runwar.server: *** starting 'stop' listener thread - Host: 0.0.0.0 - Socket: 42777

[INFO ] runwar.server: ******************************************************************************

[INFO ] runwar.server: Server is up - http-port:80 https-port:443 stop-port:42777 PID:286 version 4.5.1

这对我来说都是全新的,所以我可能做错了一些事情,我想知道这是否是文件夹嵌套的问题,尽管我已经尝试重新排列它但无法提出可行的解决方案。

最佳答案

您正在使用预热图像

image: ortussolutions/commandbox:lucee5

这意味着服务器已经启动并“锁定”到它的所有设置,包括网络根目录。使用从未启动过服务器的 Vanilla 命令框图像,这样当您预热图像时,您将第一次使用您的设置启动它。

要设置自定义 Web 根目录,您需要将其添加到您的 docker 文件中

ENV APP_DIR=/app/public

关于带有 Commandbox 的 Docker-Compose 无法更改 Web 根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71247957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com