【发布时间】:2015-12-17 19:57:14
【问题描述】:
所以我试图让 Docker 在我们公司的发布工作流程中采用,所以我必须使用 docker 和我想要整合的所有技术来制作一个项目。
我已经创建了一个 Dockerfile 来构建我们的 VM 环境,除了最后几个步骤之外,一切都运行良好。
当我为项目构建映像时,我将在我的机器上有一个包含标准化 docker LEMP 堆栈的文件夹,它会在我的 /documents/kitematic/image_name 中创建一个新的挂载卷,我们将在其中初始化一个 git 存储库。
出于这个原因,我想使用 COPY 或 add 将所有 dockerfile 复制到新的 Docker 卷中,以便将其包含在 git repo 中以跟踪更改,同时让开发人员更容易克隆 repo 构建并继续。
Dockerfile的最后一部分是
# Create Mounted Folders
RUN mkdir /$SMACK_APP_VOL_DIR && \
mkdir /$SMACK_APP_VOL_DIR/www && \
mkdir /$SMACK_APP_VOL_DIR/docker_stack
# set owners of web folders before mounting
RUN usermod -u 1000 www-data
# set folder groups
RUN chown -Rf www-data:www-data /$SMACK_APP_VOL_DIR
# Mount folders
VOLUME ["/$SMACK_APP_VOL_DIR/www","/$SMACK_APP_VOL_DIR/docker_stack/"]
# Expose Ports
EXPOSE 443
EXPOSE 80
# Add git commands to allow container updating
ADD ./docker_stack/pull /usr/bin/pull
ADD ./docker_stack/push /usr/bin/push
RUN chmod 755 /usr/bin/pull && chmod 755 /usr/bin/push
# Supervisor Config
ADD ./docker_stack/confs/supervisord.conf /etc/supervisord.conf
# Start Supervisord
ADD ./docker_stack/start.sh /start.sh
# nginx site conf
RUN rm -Rf /etc/nginx/sites-available/*
ADD ./docker_stack/confs/default.conf /etc/nginx/sites-available/
# Copy docker project to folder for inclusion to GIT repo
ADD ./docker_stack/ /mounted/docker_stack
CMD ["/bin/bash", "/start.sh"]
所以我本地文件夹中的 docker_stack 是 docker 文件所在的位置,我最初使用 env var $SMACK_APP_VOL_DIR 来添加和读取遇到环境问题的人,并且 ADD/COPY 对挂载路径进行了硬编码。它仍然不会移动 docker_stack 目录,但如果我这样做了
ADD ./docker_stack/ /home
它确实将其复制到 /home 目录,但如果我尝试将 /home 添加到 VOLUME,则文件不会显示在我的本地计算机中。
非常感谢任何帮助
【问题讨论】:
标签: docker boot2docker dockerfile docker-compose