如何在Docker中挂载ColdFusion卷?

3

这是我为 ColdFusion 2018 尝试的 docker-compose 文件:

version: '3.3'
services:
cf18:
  environment:
    - acceptEULA=YES
    - password=admin
  volumes:
    - /opt/coldfusion/:/opt/coldfusion/
  ports:
    - 8500:8500
  image: adobecoldfusion/coldfusion2018:latest
  command: 'whoami'

功能正常,但是无法挂载卷,并且我有以下类似于 Docker 错误日志的内容:

/opt/startup/start-coldfusion.sh: 523: cd: can't cd to /opt/coldfusion/cfusion/bin/

我需要挂载这个,因为更改需要在我执行Docker "docker-compose down"和"docker-compose up"时保持不变。
非常感谢任何帮助。

1
卷挂载总是替换镜像中的内容;看起来像是将一个卷挂载到/opt/coldfusion上,替换了实际应该运行的应用程序。你能将卷挂载缩小到更具体的数据目录吗? - David Maze
你对 /opt/coldfusion 进行了哪些更改需要持久化? - Pete
我需要在ColdFusion管理员中添加一些映射、数据源和邮件服务器信息。 - Justin
2个回答

2

您不应该将整个/opt/coldfusion文件夹挂载到您的主机系统上。只需挂载您想要持久保存的子文件夹(如日志等)。以下是来自我的coldfusion-docker-starter repo (https://github.com/dskaggs/coldfusion-docker-starter) 的示例:

services:
  coldfusion:
    image: eaps-docker-coldfusion.bintray.io/cf/coldfusion:latest
    env_file: coldfusion.env
    ports:
    - 8500:8500
    - 5005:5005
    volumes:
    - ${PWD}/app:/app
    - ${PWD}/logs/:/opt/coldfusion/cfusion/logs/
    networks: 
      - web

networks:
  web:  

绑定挂载不仅限于目录。您还可以将主机上的特定文件挂载到容器中的文件中。例如,这是一种将MySQL驱动程序JAR文件挂载到容器中以便ColdFusion可以访问它们的方法之一(我不会在生产环境中这样做,只是提供一个例子):

volumes:
- ${PWD}/app:/app   
- ${PWD}/data/:/data
- ${PWD}/drivers/mysql-connector-java-8.0.21.jar:/opt/ColdFusion/cfusion/lib/mysql-connector-java-8.0.21.jar

编辑:修正了缩进


0

我发现了这个 ColdFusion Docker 镜像的仓库,由 Charlie Arehart 维护:

https://github.com/carehart/awesome-cf-compose

挖掘这个可以显示存储库文件夹结构中/app的安装点。
# Project structure:

.
├── docker-compose.yml
├── app
    └── test.cfm
    └── dumpserver.cfm

# docker-compose.yml

services:
    coldfusion: 
        image: adobecoldfusion/coldfusion2021:latest
        ports:
        - "8500:8500"
        environment:
            - acceptEULA=YES
            - password=123
        volumes:
            - ./app:/app

我尝试过相同的操作,但只有应用程序文件夹被挂载了,没有 ColdFusion 文件。也就是说,如果我们在 CF 管理员中进行了一些映射或添加了数据源,则在执行 "docker-compose down" 后它们将会丢失。 - Justin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接