docker-compose 编排超小node容器

​ 之前一文中也详细叙述了搭建node容器的挂载目录方面的步骤,注意我们的目的是将nginx容器作为一个及拉及用软件,而不是将其作为一个VM,在其中大刀阔斧的修改配置。

建议看看前面一文《Docker nodejs镜像搭建》,Dockerfile搭建node容器。

​ 为了缩小node容器的大小,接下来使用Linux的轻型发行版本:Alpine

一、配置相关挂载目录及其文件

1、 创建需要挂载的相应的挂载目录

/root/nodejsdocker_alpine/
|	server.js
|	run.sh
|	package.json
|	docker-compose.yml
|	.dockerignore

2、nodejs服务器

server.js

const express = require('express');

// Constants
const PORT = 8081;
const HOST = '0.0.0.0';

// App
const app = express();
app.get('/api', (req, res) => {
  res.send('Hello World');
});
app.get('/api/test', (req, res) => {
  res.send('Hello World api/test');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

3、依赖包package.json

package.json

{
  "name": "docker_web_app",
  "version": "1.0.0",
  "description": "Node.js on Docker",
  "author": "First Last <first.last@example.com>",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.16.1"
  }
}

4、.dockerignore

.dockerignore
这将避免你的本地模块以及调试日志被拷贝进入到你的 Docker 镜像中,以至于把你镜像原有安装的模块给覆盖了。

node_modules
npm-debug.log

5、run.sh

run.sh脚本文件,启动服务器

cd /code/
npm install
node /code/server.js

二、编写容器编排文件

docker-compose.yml,注意格式缩进

version: '3'
services:
    node:
        image: node:alpine
        container_name: node
        ports:
            - "8080:8080"
        volumes: 
            - /root/nodejsdocker_alpine/:/code/
        privileged: true
        restart: always
        command: sh /code/run.sh

三、运行及查看

[root@iZ2ze5ot8cnsficuqqnoj5Z /root/nginxdocker/]# docker-compose up -d

启动错误!,查看错误日志

docker logs [容器ID]

查看镜像,我只能说小的一批

[root@iZ2ze5ot8cnsficuqqnoj5Z conf.d]# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
node                    alpine              48de5d16038c        6 days ago          113MB


[root@iZ2ze5ot8cnsficuqqnoj5Z conf.d]# docker-compose ps
Name              Command               State           Ports
----------------------------------------------------------------------
node   docker-entrypoint.sh sh /c ...   Up      0.0.0.0:8080->8080/tcp

宿主机上测试接口

[root@iZ2ze5ot8cnsficuqqnoj5Z nodejsdocker_alpine]# curl localhost:8080/api
Hello World

外网测试接口

访问:http://47.****.82:8080/api/

访问:http://47.****.82:8080/api/test/

进步ing

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不染心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值