我试图将项目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?
答案 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