小编Phi*_*ann的帖子

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

我是码头工人的新手,所以这对你来说似乎是非常基本的 - 无论如何 - 它此刻吓坏了我.

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

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

我可以建造容器并将它们带出来

建立:

docker-compose -f compose-Development.yml build
Run Code Online (Sandbox Code Playgroud)

达:

docker-compose -f compose-Development.yml up
Run Code Online (Sandbox Code Playgroud)

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

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

有了Vagrant的一些经验,我会在开发期间寻找某种共享源.但是我如何实现这一目标呢?

我的应用程序Vagrantfile(用于开发)看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

撰写文件:

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: …
Run Code Online (Sandbox Code Playgroud)

provisioning docker docker-compose devops

11
推荐指数
1
解决办法
7744
查看次数

docker 和 php:将依赖项(composer)放入容器中

一点背景:我是 docker 新手,还不知道任何最佳实践。我的任务是创建一个基于 php 的网络服务,我决定使用 docker-compose 进行配置。

因为我们都是优秀的开发人员,所以我们知道 - 现在没有使用 Composer 构建 php 应用程序的方法。

我的问题:

我应该在构建中安装依赖项吗?因此,通过将其添加到我的 Dockerfile 中:

RUN cd /app && composer install --no-interaction --prefer-source --optimize-autoloader
Run Code Online (Sandbox Code Playgroud)

或者我应该在开发过程中安装依赖项并构建包含依赖项的容器映像?


我只知道一种不这样做的方法:在开发机器上本地安装依赖项,然后构建容器。但是“最佳实践”会是什么样子呢?

而且 - 因为我是这个领域的新手 - 我将如何为我的应用程序服务容器运行“composer require some/package”?

顺便一提

我还注意到一条消息“不要以 root/超级用户身份运行 Composer!” 在构建容器时。我添加COMPOSER_ALLOW_SUPERUSER=1到我的 Env 文件(如这里所示),但此消息仍然出现。

是否可以不在 docker 容器中以 root 身份执行 composer install?我可以忽略该消息吗?

提前致谢,菲利普

php composer-php docker docker-compose devops

6
推荐指数
2
解决办法
4540
查看次数

流:不是多态类型

我只是第一次集成来静态检查我的JavaScript源。

我正在努力寻找错误流,但我无法自行解决。关于使用es6类和继承。更具体地说,我创建了一些react组件,它们应该继承一些方法。

我有一个标注组件,它表示未指定严重性的标注消息。为了使事情更简单一些,我想到了提供一个ErrorMessage组件,该组件继承了Callout组件。我的课程结构看起来像:

React.Component
    > AbstractComponent (here i add some project-wide helpers for i18n and so on
        > Callout (this represents a pretty message on the screen)
            > ErrorMessage (this represents an error)
Run Code Online (Sandbox Code Playgroud)

流程告诉我:

Error ?????????????????????????????????????????????????????????????????? src/js/Components/Generic/ErrorMessage.js:14:43

statics of Callout [1] is not a polymorphic type.

     11?     icon: string
     12? };
     13?
 [1] 14? export default class ErrorMessage extends Callout<Props> {
     15?
     16?     static get defaultProps(): Props {
     17?         return {
Run Code Online (Sandbox Code Playgroud)

该部分Callout<Props>突出显示

我已经为标注类定义了道具类型,所以这可能是问题所在,但我不能自己解决。

下面几行引发了类似的错误,在该行中,我尝试通过解决super.content(内容是Callout的get-method)来访问父方法。

提前致谢

更新:为什么要使用类继承? …

javascript static-analysis reactjs flowtype

6
推荐指数
1
解决办法
3271
查看次数

不同项目的节点版本不同,有没有办法告诉节点要使用哪个版本?

我有一个很常见的问题。我的许多项目都使用nodejs,一些用于业务逻辑,其他仅用于某些构建任务。

我需要在不同的项目中使用不同的运行时,我的电子应用程序之一需要节点7.10.0,典型的构建套件需要节点8.x。

现在我知道-我可以在计算机上全局使用sudo n 7.10.0sudo n latest切换运行时(对于那些不知道的人-看看“ n”

无论如何,IMO这不是那么方便(有时,我需要在切换版本后重建所有模块,通常我忘了切换等等)。有没有一种方法告诉节点要使用哪个解释器?我可以使用.npmrc项目目录中的文件来强制该子目录中的特定nodejs版本吗?

我完全搜索了此内容(npmrc节点版本),但没有找到足够的幸运。

linux node.js npm n

5
推荐指数
1
解决办法
1496
查看次数

React input[type=date] 组件无法正常工作

我正在构建一个基于反应的电子应用程序,并偶然发现了日期字段的问题。

当使用input与现场type='date'onChange事件,不会触发。此外,似乎我无法输入完整日期,一旦我修改了它重置的日期的第三个部分。

因此,默认状态(呈现的输入字段,对值的反应状态为“”)是 tt.mm.jjjj(德语),我认为它会转换为 mm/dd/yyyy。我可以聚焦该字段并输入 01 > 01,然后显示:01.01.jjjj。一旦我输入了这一年的一个数字,一切都会恢复到 tt.mm.jjjj

我用 input[type=date] 元素创建了一个空的 html 文件,它在铬中工作,所以它似乎是反应组件,这是有问题的。

我的组件看起来像:

<input
    type="date"
    className="input-group-field"
    name="birthdate"
    id="birthdate"
    value={this.state.birthDate}
    onChange={event => this.setState({birthdate: event.target.value})}
/>
Run Code Online (Sandbox Code Playgroud)
  • 电子 = 1.7.8
  • 铬 = 7.9.0
  • 反应 = 15.6.2

关于如何解决这个问题的任何想法?

html chromium reactjs electron

4
推荐指数
1
解决办法
1万
查看次数