首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-compose:如何立即查看文件更改(在开发时)

docker-compose:如何立即查看文件更改(在开发时)
EN

Stack Overflow用户
提问于 2017-11-28 21:38:13
回答 1查看 19.4K关注 0票数 27

我刚开始接触docker,所以这对你来说可能是非常基础的,不管怎样--它让我抓狂了。

我决定在容器之上开发一个新的web项目,当然我想到了docker。在完成教程并阅读了一些Dockerfile等之后,我决定使用docker-compose。

我想有多个组成文件,一个用于开发,一个用于生产,以此类推。现在,我设法使用3种不同的服务编排了一个基本的php/mysql/redis应用程序。主应用程序是基于php的,并在项目src中维护。Mysql和Redis只需配置基础镜像,不需要任何业务逻辑。

我可以构建容器并将它们带上来

内部版本:

代码语言:javascript
复制
docker-compose -f compose-Development.yml build

up:

代码语言:javascript
复制
docker-compose -f compose-Development.yml up

主应用程序容器中的许多文件都是由gulp构建的(模板、css等),代码将同时存在于javascript和php中。

我注意到,当我更改我的文件时,我的应用程序状态不会改变。我将不得不重新构建并重新启动我的容器。

有了Vagrant的一些经验,我会在开发过程中寻找一些共享的源码。但是我该如何实现呢?

我的应用程序Dockerfile (用于开发)如下所示:

代码语言:javascript
复制
FROM webdevops/php-nginx:7.1
COPY ./ /app
COPY docker/etc/ /opt/docker/etc

# php config...
RUN ln -sf /opt/docker/etc/php/php.Development.ini /opt/docker/etc/php/php.ini

WORKDIR /app/
EXPOSE 80

合成文件:

代码语言:javascript
复制
version: "3"
services:

  app:
    build:
      context: .
      dockerfile: Dockerfile.Development
    links:
      - mysql
      - redis
    volumes:
      - ./data/fileadmin:/app/public/fileadmin
      - ./data/uploads:/app/public/uploads
    env_file:
      - docker/env/All.yml
      - docker/env/Development.yml
    ports:
      - "80:80"
    restart: always

  # Mysql Container
  mysql:
    build:
      context: docker/mysql/
      dockerfile: Dockerfile
    restart: always
    volumes:
      - mysql:/var/lib/mysql
    env_file:
      - docker/env/All.yml
      - docker/env/Development.yml

  # Cache Backend Container
  redis:
    build:
      context: docker/redis/
      dockerfile: Dockerfile
    ports:
      - "6379:6379"
    volumes:
      - redis:/data
    env_file:
      - docker/env/All.yml
      - docker/env/Development.yml
    restart: always

volumes:
  mysql:
  redis:

到目前为止,我使用了一些github存储库来复制数据块。我知道在我的设置中可能还有其他问题,目前最大的阻塞问题是链接/复制的源码。

亲切的问候,菲利普

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-29 12:35:28

“开发/生产对等”的概念使这方面的许多人感到困惑。这并不意味着您可以简单地使用单个配置,它将适用于所有内容;它意味着您将拥有更接近的奇偶校验,并且您可以创建一个与生产环境非常相似的环境。

这里的问题是,目前你正在构建你的镜像,它已经准备好发布了,它会有你的代码,你已经为上传留出了卷,等等。太棒了!

不幸的是,这种设置对于开发是不正确的。如果你想在运行中编辑代码--你需要将你的本地工作目录作为一个卷附加到图像上。这将不会在生产中被完成;所以它非常接近-但不是完全相同的设置。()

将以下内容添加到您的compose-file的app服务卷部分,您就可以开始工作了:

代码语言:javascript
复制
- .:/app
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47532974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档