尝试使用docker-compose创建angular-cli的环境

总结

在创建开发环境的同时,尝试着在容器内创建可运行的Angular应用。

最近,我遇到了一些问题,为了重新制作它们,我创建了另一个容器,现在我来整理一下。

    10/6 ローカルインストールと、環境変数に対応修正

构成

我想在Build和Serv之间更改工作目录,所以设置了覆盖Compose文件。

 ├ data/
 │ └ app/              ------ アプリケーションインストール用ディレクトリ
 ├ nodejs/
 │ └ nodejs.dockerfile ------ コンテナ定義
 ├ .env                 ------ 環境変数定義
 ├ docker-compose       ------ ベースのcompose
 ├ docker-compose.init.yml  -- アプリケーションインストール定義
 └ docker-compose.serv.yml  -- サービス起動用

货柜

在Node.js的官方容器中添加用户,并将路径设置为通用。

FROM node:8.6

ARG NODE_USER 
ARG DATA_DIR

RUN useradd -s /bin/false -m ${NODE_USER}

RUN mkdir -p /var/app
RUN chown -R ${NODE_USER}:${NODE_USER} /var/app

USER ${NODE_USER}
ENV PATH $PATH:./node_modules/.bin
WORKDIR ${DATA_DIR}

Docker-Compose 集成化部署工具

贝斯

version: "3.3"
# angular cli
services:
  angular:
    #buildのみ
    build:
      args:
        - NODE_USER=$NODE_USER
        - DATA_DIR=$DATA_DIR
      context: ./nodejs
      dockerfile: nodejs.dockerfile
    volumes:
      - type: bind
        source: $HOST_DIR
        target: $DATA_DIR
      - type: bind
        source: ./logs
        target: /var/log/syslog
    logging:
      driver: "json-file"
      options:
        max-size: "50M"
        max-file: "10"

需要安装的

当试图进行本地安装时,由于绑定时机在构建之后,因此必须在Dockerfile中进行绑定。但在基于Windows的环境下会变得较为复杂,因此我选择在构建完成后再次执行绑定操作。
(因为在容器中可直接看到Docker for Windows的Hyper-V上的主机,所以可能需要进行环境相关的描述)

version: "3.3"
# angular cli
# angular本体のインストール、プロジェクト作成
services:
  angular:
    command:
      - /bin/sh
      - -c
      - |
        npm install @angular/cli
        ng new ${APP}

开发服务器启动用

开启实时重新加载未生效,经过一番查看之后
https://github.com/angular/angular-cli/issues/1610
因为要开启轮询,所以添加了该选项
另外,默认情况下无法从容器外部连接,所以还需要指定host。

version: "3.3"
# angular cli
services:
  angular:
    environment:
      - "APP_DIR=${APP_DIR}"
    ports:
      - "$CPORT:$LPORT"
    working_dir: ${APP_DIR}
    #poll --- 単位ミリ秒で指定、且つwatching有効化
    #host --- コンテナ外からアクセスできるようにするため、全てのアドレスで待ち受ける
    command: ng serve --host 0.0.0.0 --poll=2000
NODE_USER=appuser
APP=test-app
CPORT=4200
LPORT=4200
DATA_DIR=/var/app
APP_DIR=/var/app/test-app
HOST_DIR=./data/app

如何启动

建筑

进行容器构建,并绑定工作目录。

docker-compose build

创建应用程序

执行安装定义

docker-compose -f docker-compose.yml -f docker-compose.init.yml up

服务器启动

使用覆写基础的compose文件来启动,并启动服务器。

docker-compose -f docker-compose.yml -f docker-compose.serv.yml up -d

确认行动

广告
将在 10 秒后关闭
bannerAds