尝试使用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