A place to hold mainly reading notes, and some technical stuff occasionally. 这里主要是一些读书笔记、感悟;还有部分技术相关的内容。
目录[-]
当然,随便一个Node app即可。 按照Node官网提供的例子,可以顺利对Node App构建镜像、运行容器,每一步都写得清楚明了。 这里采用前面做的一个基于koa2, vue的一个小型应用来实现Docker化。
# On the shoulder of giant
FROM daocloud.io/library/node:latest
MAINTAINER Heartsuit
RUN \
DEBIAN_FRONTEND=noninteractive apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install tesseract-ocr
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json .
# For npm@5 or later, copy package-lock.json as well
COPY package.json package-lock.json ./
RUN npm install --only=production
# If you are building your code for production
# RUN npm install --registry=https://registry.npm.taobao.org
# Bundle app source
COPY . .
# Bind port and start
EXPOSE 8888
CMD [ "npm", "start" ]
与Node 官网例子的区别主要是增加了安装程序(RUN)这一步,因为ocr调用的还是宿主机器的可执行程序。 新增的命令(在Linux宿主机下安装软件)如下:
RUN \
DEBIAN_FRONTEND=noninteractive apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -y install tesseract-ocr
与.gitignore类似,用以忽略不进行构建的资源文件/目录。
node_modules
容器可以理解为镜像的一个实例。
# 从Dockerfile构建一个镜像
docker build -t <name:version> <Dockerfile directory>
# 查看新构建的镜像
docker images
# 以后台模式从镜像启动容器,并将映射端口:本地端口:容器内端口
docker run -p 8888:8888 -d <name:version>
# 查看正在运行的容器
docker ps
# 查看本地端口与容器端口的映射
docker port <container id>
# 查看容器中应用控制台打印出的日志
docker logs <container id>
# 查看docker默认ip
docker-machine ip default
# 测试Web应用是否可用(这里采用默认的docker-machine地址,怎样才能使用localhost访问,还没找到方法??)
curl http://$(docker-machine ip default):port
# Copy容器内的文件到宿主本地
docker cp <container id>:/usr/src/app/log.txt '本地磁盘路径'
# 进入容器
docker exec -it <container id> /bin/bash
Note:
tcuser
;root用户没有密码,在docker用户下使用sudo su - root
切换到root;docker start <container id>
启动之前被关闭的容器;# 查看docker容器中Linux系统版本信息
cat /proc/version
# 删除当前目录下所有内容(比如清除某文件夹下的临时文件)
rm -rf *
# 退出容器,返回docker
exit
# Upload image to private repository on hub.c.163.com
docker login -u username -p password hub.c.163.com
docker tag <tag> hub.c.163.com/<user id>/tag
docker push hub.c.163.com/<user id>/tag
curl http://$(docker-machine ip default):port
docker cp <container id>:/usr/src/app/log.txt '本地磁盘路径'
docker exec -it <container id> /bin/bash
进入容器,然后执行apt-get update
, apt-get install tesseract-ocr
;这种方式仅会在当前的容器实例中安装,下次run镜像的时候,需重新安装;上述几个问题都可以从可能用到的命令中找到解决方法。
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!