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

标签 docker docker-compose devops provisioning

我是 docker 新手,所以这对你来说可能看起来很基础——这让我很害怕。

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

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

我可以构建容器并使用

构建:

docker-compose -f compose-Development.yml build

向上:

docker-compose -f compose-Development.yml up

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

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

对 Vagrant 有一些经验,我会在开发过程中寻求某种共享源。但是我该如何实现呢?

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

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

撰写文件:

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 存储库从中复制 block 。我知道我的设置中可能还有其他问题,目前最受阻的问题是链接/复制源的问题。

亲切的问候, 菲利普

最佳答案

“开发/生产平价”的概念在这方面让许多人感到困惑。这并不意味着您可以简单地拥有一个配置,它就可以适用于所有事情;这意味着您将拥有更多更接近的平价,并且您可以创建一个类似于您将在生产中拥有的环境的环境。

这里的问题是,目前您正在构建您的图像并且它可以发送出去,它会有您的代码,您有留出用于上传的卷等等。太棒了!

很遗憾,此设置不适合开发。如果您想即时编辑代码 - 您还需要将本地工作目录作为卷附加到图像。这将不会在生产中完成;所以它非常接近 - 但不完全相同的设置。

将以下内容添加到您的 compose-file 的 app 服务卷部分,您应该一切顺利:

- .:/app

关于docker-compose:如何立即查看文件更改(开发时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47532974/

相关文章:

docker - 生产中每台主机应该存在多少个容器?服务应该如何拆分?

docker - docker-compose 可以在具有离散端口的服务之间共享 ip 吗?

docker - 通过 docker-compose 运行多个应用程序

plugins - Gitlab与SonarQube集成

mysql - Docker - Dockerfile 中使用 RUN 的 MySQL 命令(错误 2002)

laravel - 在 docker 容器中设置 laravel 任务调度器

ruby-on-rails - Docker无法在rspec测试目录中看到更新的夹具CSV

amazon-web-services - Terraform 等 IaaS 配置工具有用吗?

git - 查看我本地机器上的所有 git 事件

Docker 缓存失效