Dockerising节点应用程序

时间:2018-06-14 07:28:46

标签: node.js shell docker

我试图将项目etherpad-lite停靠在Github上。

文件夹结构是这样的:

etherpad-lite
├── bin
│   ├──run.sh
│   └── <some more files and dirs>
├── node_modules
│   └── ep_etherpad-lite -> ../src
├── src
│   ├── node
│   │   ├── <contains server.js>
│   │   ├── some other files
│   ├── <contains Dockerfile and package.json>
├── <some other dirs>

我的Dockerfile如下:

FROM node:8
WORKDIR /app3
COPY package.json /app3
RUN npm install
COPY . /app3
RUN cd ..
CMD ./bin/run.sh
EXPOSE 9001

我运行以下命令来构建图像:

sudo docker build -t docker-etherpad-lite .   

输出如下:

Sending build context to Docker daemon  89.56MB
Step 1/8 : FROM node:8
 ---> baf6417c4cac
Step 2/8 : WORKDIR /app3
 ---> Using cache
 ---> 0a3d6f291156
Step 3/8 : COPY package.json /app3
 ---> Using cache
 ---> 7670bee8c3a6
Step 4/8 : RUN npm install
 ---> Using cache
 ---> 9e664f008cf9
Step 5/8 : COPY . /app3
 ---> 81b1633b14a2
Step 6/8 : RUN cd ..
 ---> Running in c3fa14639657
Removing intermediate container c3fa14639657
 ---> c90c071f8c49
Step 7/8 : CMD ./bin/run.sh
 ---> Running in 7964e382cee7
Removing intermediate container 7964e382cee7
 ---> 2a93b0c66d0b
Step 8/8 : EXPOSE 9001
 ---> Running in 2df13cd2bfa3
Removing intermediate container 2df13cd2bfa3
 ---> b75e9fc149ae
Successfully built b75e9fc149ae
Successfully tagged docker-etherpad-lite:latest

但是在尝试运行时,我遇到了这个错误:

/bin/sh: 1: ./bin/run.sh: not found

我做错了吗?或者bash有问题吗? 我是否必须在Dockerfile中添加这样的命令FROM debian:ubuntu?

2 个答案:

答案 0 :(得分:0)

尝试更改Dockerfile中的CMD

CMD /app3/bin/run.sh

还要确保chmod +x bin/run.sh

答案 1 :(得分:0)

我想我已经回答了我的问题。实际上,我将我的Dockerfile放在src文件夹中,因此Docker构建的容器图像不包含其余文件夹(包括bin)。出于这个原因,它显示错误bin / run.sh未找到。 通过将Dockerfile保存在根文件夹(etherpad-lite)中并在Dockerfile中进行一些修改,可以很容易地解决错误,如下所示:

FROM node:8
WORKDIR /app3
COPY . /app3
CMD ./bin/run.sh
EXPOSE 9001