FED实验室 - 专注WEB端开发和用户体验

Docker 私有仓库搭建及 Node.js 应用发布

煦涵说 煦涵 92℃ 0评论

Docker 私有仓库搭建及 Node.js 应用发布

系统环境:CentOS Linux release 7.2.1511 (Core) 3.10.0-327.el7.x86_64
私有仓库虚机IP: 10.134.120.120

Docker 安装

# 安装必要工具
$ yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加 yum 源
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新 yum 缓存
$ yum makecache fast

# 安装 docker-ce
$ yum -y install docker-ce

# 启动 docker 服务
$ systemctl start docker

安装私有仓库

$ docker run --name docker-registry --restart always -v /search/odin/docker-registry:/var/lib/registry -d -p 5000:5000 registry

# 参数说明
# -d: 后台运行
# -p: 将容器的5000端口映射为宿主机器的5000端口
# --restart: docker 服务重启后总是重启此容器
# --name: 容器名称
# -v: 将容器内的/var/lib/registry目录映射到宿主机器 /search/odin/docker-registry

新建 Dockerfile 文件

# Dockerfile
FROM node:8

WORKDIR /search/odin/www

COPY package*.json /search/odin/www/

# 私有 npm 仓库可以添加 --registry=http://private.xxxx.com
RUN npm install

COPY . .

ENV NODE_ENV production

EXPOSE 8083
CMD ["npm", "run", "server"]

新建 .dockerignore 文件

.git
.idea
.DS_Store
.data
node_modules
node_modules.log
npm-debug.log
yarn-debug.log
yarn-error.log

创建镜像

# create
$ docker build -t monitor

# view image list
$ docker images

# run the image
$ docker run -p 41960:8083 -d monitor

# view container list
$ docker ps -a

# view node.js application
Running on http://localhost:8083

发布镜像到私有仓库

# 修改镜像 tag
$ docker tag monitor 10.134.120.120/monitor

# 发布镜像到私有仓库
$ docker push 10.134.120.120:5000/monitor
The push refers to repository [10.134.120.120:5000/monitor]
Get https://10.134.120.120:5000/v2/: http: server gave HTTP response to HTTPS client

# 出现推送失败,Docker在1.3.x之后默认docker registry使用的是https,修改docker启动配置文件
$ vim /etc/docker/daemon.json
# 增加如下内容
# {"insecure-registries":["10.134.120.120:5000"]}

# 重新发布,成功
$ docker push 10.134.120.120:5000/monitor

搭建 WEB 服务

# 安装镜像
$ docker pull hyper/docker-registry-web

# 新建(无认证)配置文件 config.yml, 增加以下内容
registry:
  # Docker registry url
  url: http://docker-registry:5000/v2
  # Docker registry fqdn
  name: localhost:5000
  # To allow image delete, should be false
  readonly: false
  auth:
    # Disable authentication
    enabled: false

# run the image, 好像服务必须是 8080 端口
$ docker run -it -p 8080:8080 --name registry-web --link docker-registry -v $(pwd)/config.yml:/conf/config.yml:ro hyper/docker-registry-web

# 浏览器访问

http://10.134.120.120:8080

参考链接

下面是「FED实验室」的微信公众号二维码,欢迎扫描关注:

FED实验室

行文不易,如有帮助,欢迎打赏!

赞赏支持or喜欢 (0)or分享 (0)
捐赠共勉
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址