首先创建一个简单的 Koa 应用:

    app.js

    1. const Koa = require('koa');
    2. const app = new Koa();
    3. const path = require('path');
    4. const route = require('koa-route');
    5. const staticFiles = require('koa-static');
    6. const main = staticFiles(path.join(__dirname, 'public'));
    7. console.log(path.join(__dirname, 'public'));
    8. app.use(route.get('/public', main));
    9. app.use(route.get('/', ctx => {
    10. ctx.response.body = 'Welcome'
    11. }));
    12. app.listen(3000);

    创建 Dockerfile:

    FROM node:lts-alpine
    MAINTAINER quanzaiyu
    
    ADD . /app/
    WORKDIR /app
    
    RUN npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
    RUN npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/
    RUN npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
    RUN npm config set chromedriver_cdnurl https://cdn.npm.taobao.org/dist/chromedriver
    RUN npm install
    RUN npm rebuild node-sass --force
    
    ENV HOST 0.0.0.0
    ENV PORT 3000
    
    EXPOSE 3000
    
    CMD ["node", "app"]
    

    打包构建为 Docker 镜像:

    $ docker build -t "731734107/test-koa" .
    

    运行测试:

    $ docker run -p 8080:3000 731734107/test-koa
    

    将容器中的3000端口映射到宿主机的8080端口, 在宿主机中使用 http://localhost:8080 即可访问

    推送到 Docker Hub

    $ docker push 731734107/test-koa