Skip to content

eggjs + docker 最佳实践 #1431

Closed
Closed
@tsui66

Description

@tsui66

docker该如何配合eggjs work特性让项目稳定的运行?

Activity

atian25

atian25 commented on Sep 15, 2017

@atian25
Member

就在 docker 里面跑 egg-scripts start 即可,不需要 --daemon 了。

thonatos

thonatos commented on Sep 16, 2017

@thonatos
Member

#package.json

{
  "scripts": {
    "start": "egg-scripts start",
  }
}

Dockerfile

FROM node:8.6.0-alpine

RUN apk --update add tzdata \
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone \
    && apk del tzdata

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

# add npm package
COPY package.json /usr/src/app/package.json

RUN npm i --registry=https://registry.npm.taobao.org

# copy code
COPY . /usr/src/app

EXPOSE 7001

CMD npm start

8.0.0 egg-socket-io sticky 会有问题,如果没特殊要求换高版本吧

tsui66

tsui66 commented on Sep 17, 2017

@tsui66
Author

提前COPY package.json && npm install ,docker构建镜像,加快速度
另:用yarn替代npm可以加快镜像构建,大概平均节省30s

atian25

atian25 commented on Sep 17, 2017

@atian25
Member
thonatos

thonatos commented on Sep 17, 2017

@thonatos
Member

tips

  • RUN/COPY 是分层的,package.json 提前,只要没修改,就不会重新安装包
  • npm/yarn/cnpm 新版并木有速度太大差距哇,关键是源
  • 添加时区可以有效避免部分包如 aliyun-oss 因时区差异导致的签名失败问题(海外Region)

感受一下速度吧

2017-09-17 12 08 12

abos5

abos5 commented on Sep 29, 2017

@abos5
RUN apk --update add tzdata

请问这一步能否用到国内镜像呢,部分网络好慢

atian25

atian25 commented on Sep 29, 2017

@atian25
Member

这块属于具体 docker 系统的命令了,可以自行 google 下如何修改 alpine 的源

popomore

popomore commented on Sep 29, 2017

@popomore
Member

@abos5 可以自己找下国内 apk 镜像

VectorHo

VectorHo commented on Oct 24, 2017

@VectorHo

@thonatos 是什么构建UI,是docker hub 和github 协作那个吗?

thonatos

thonatos commented on Oct 24, 2017

@thonatos
Member

阿里云容器服务

Yang03

Yang03 commented on Jul 31, 2018

@Yang03

npm run start 时不加--daemon,node 在前台运行, gitlab ci job 一直就会在运行状态 @atian25

thonatos

thonatos commented on Aug 1, 2018

@thonatos
Member

@Yang03

CI 不应该跑 egg-scripts start

19 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @atian25@popomore@thonatos@tsui66@muzi131313

        Issue actions

          eggjs + docker 最佳实践 · Issue #1431 · eggjs/egg