如何解决Docker - cms 开发的正确方法
我目前正在为开发目的设置 docker。
目标是轻松设置 MysqL、apache、PHP 和 cms (omeka)。
我设法重写了一个 dockerfile 和 dockercompose,它们会自动为普通用户设置 cms,但我需要能够访问我在构建过程中获取的 CMS 源代码。
根据我的理解,卷/绑定不是解决方案,因为它们只能访问在构建之后添加的文件(我无论如何都尝试过,但无法访问这些文件)。
我应该编写一个脚本来运行撰写例程,然后然后下载文件并执行安装 cms 所需的操作,还是有更多的 docker 方法来解决这个问题?
这是我的 docker-compose :
version: '3'
services:
db:
image: MysqL:latest
environment:
//some vars. irrelevant
PHPmyadmin:
image: PHPmyadmin/PHPmyadmin
depends_on:
- db
ports:
- 8081:80
omeka:
build: .
depends_on:
- db
ports:
- "8080:80"
environment:
//some vars. Irrelevant
volumes:
- type: bind
source: ./www/
target: /var/www/
volumes:
www:
还有我的 Dockerfile :
FROM PHP:8.0.3-apache
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends \
[some packages]
RUN docker-PHP-ext-install exif MysqLi
# Install omeka
workdir /var/www
RUN git clone --recursive https://github.com/omeka/omeka.git
RUN chown -R root.www-data omeka && chmod 775 omeka
workdir /var/www/omeka
[....]
# copy some files,run some commands,set some rights
# Configure apache
copY omeka.conf /etc/apache2/sites-available/omeka.conf
[....]
# Configure PHP
[...]
# Add init script
copY run.sh /run.sh
RUN dos2unix "/run.sh"
RUN chmod 755 /*.sh
EXPOSE 443
CMD ["/run.sh"]
运行这个(我删除了一些变量,当然为了清晰起见,配置文件缺少)给了我一个 www 文件夹,该文件夹保持为空。
我不太明白我是如何做到这一点的,因为我不完全知道在重新运行 docker-compose p -d
时文件如何持久化或不持久化{{1}}
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。