plu*_*ium 56 docker docker-compose
I am new to Ubuntu and new to Docker. I am running a command that was given to me in an explanation of how to start the project. I want to start my Docker containers and they fail with an error.
Some notes:
sudo特权。在它响应的列表中groups产生。docker这是我用来启动它的命令:docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
它给出:
Step 11/12 : EXPOSE $PORT
---> Using cache
---> 7620427ebfe9
Step 12/12 : CMD ["ts-node", "./src/server.ts"]
---> Using cache
---> 00a32820e6e2
Successfully built 00a32820e6e2
Successfully tagged backend-marketplace_backend:latest
backend-marketplace_database_1 is up-to-date
Starting backend-marketplace_backend_1 ...
Starting backend-marketplace_backend_1 ... error
ERROR: for backend-marketplace_backend_1 Cannot start service backend: failed to create shim task:
OCI runtime create failed: runc create failed: unable to start container process: error during container init:
error mounting "/var/lib/docker/volumes/3ceff6572cda1981f7d29faf09f888cb9a8c0c5ac41b10bb323eb5d14e7e1d35/_data"
to rootfs at "/app/node_modules": mkdir /var/lib/docker/overlay2/c0a5b761bb9a94bb9a4dd3c21a862968dbbabe87698c0f744569ea56e323ea0e/merged/app/node_modules:
read-only file system: unknown
ERROR: for backend Cannot start service backend: failed to create shim task:
OCI runtime create failed: runc create failed: unable to start container process: error during container init:
error mounting "/var/lib/docker/volumes/3ceff6572cda1981f7d29faf09f888cb9a8c0c5ac41b10bb323eb5d14e7e1d35/_data" to rootfs at
"/app/node_modules": mkdir /var/lib/docker/overlay2/c0a5b761bb9a94bb9a4dd3c21a862968dbbabe87698c0f744569ea56e323ea0e/merged/app/node_modules:
read-only file system: unknown
ERROR: Encountered errors while bringing up the project.
Run Code Online (Sandbox Code Playgroud)
我看到docker-compose.yml并docker-compose.dev.yml提到过,它们是:
docker-compse.yml:
version: "3"
services:
backend:
build: .
ports:
- "8000:8000"
env_file:
- ./.env
Run Code Online (Sandbox Code Playgroud)
和docker-compose.dev.yml:
version: "3"
services:
backend:
build:
context: .
args:
NODE_ENV: development
volumes:
- ./:/app:ro
- /app/node_modules
links:
- database
env_file:
- ./.env
command: npm run dev
database:
image: "postgres:latest"
volumes:
- pgdata:/var/lib/postgresql/data
expose:
- "5432"
ports:
- "5432:5432"
env_file:
- ./.env.database
pgadmin:
image: dpage/pgadmin4:latest
ports:
- 5454:5454/tcp
environment:
- PGADMIN_DEFAULT_EMAIL=<redacted>
- PGADMIN_DEFAULT_PASSWORD=<redacted>
- PGADMIN_LISTEN_PORT=5454
depends_on:
- database
volumes:
pgdata:
Run Code Online (Sandbox Code Playgroud)
我很想说“我找到了一些线索并尝试了他们推荐的内容”,但说实话,当我读到它们时,我还不太理解它们。以下线程可能相关,但对我来说它们读起来像拉丁语。
Windows 计算机上出现“来自守护程序的错误响应:无法创建填充程序:OCI 运行时创建失败”错误
无法启动服务 api:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“python manage.py runserver
无法启动服务应用程序:OCI 运行时创建失败:container_linux.go:349
就像,我从阅读错误消息中猜测,我需要打开某种写入权限,因为错误消息以“只读文件系统:未知”结尾。遗憾的是,我能贡献的就只有这些了。
Joh*_*Lee 17
就我而言,Docker Compose已超时,并且已损坏容器。我只需要:
plu*_*ium 14
一位同事解决了我的问题。
FROM node:16-alpine
ENV NODE_ENV="development"
WORKDIR /app
COPY package.json .
COPY package-lock.json .
ARG NODE_ENV
RUN apk add g++ make py3-pip
RUN npm install
RUN chown -R node /app/node_modules
RUN npm install -g ts-node nodemon
COPY . ./
ENV PORT 8000
EXPOSE $PORT
CMD ["ts-node", "./src/server.ts"]
Run Code Online (Sandbox Code Playgroud)
我添加了RUN chown -R node /app/node_modules并且它起作用了。他说这个问题是 Linux 特有的。
小智 9
Linux 只是在将文件作为可执行文件执行时比较挑剔(我知道这是多余的)。
因此,您使用命令创建一个文本文件(或二进制文件),但您希望运行该文件并让它在容器内执行某些作业,但您需要让环境知道它有权执行此操作。
chmod方法:
RUN chmod +x ./src/server.ts
Run Code Online (Sandbox Code Playgroud)
权限级别(+x针对所有人)赋予可执行文件在容器内执行此操作的权限。
就我而言,它是使用Docker Compose并启动容器,我只是重新创建了它们。
docker-compose down
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
我在使用Alpine基础镜像创建Dockerfile时遇到了这个问题。在创建映像时,它将脚本复制到映像中,该脚本是在使用创建的映像运行容器时应执行的脚本。因为 Alpine 图像使用BusyBox,而 BusyBox 中没有,所以解决方案是使用两个入口点之一:shell
ENTRYPOINT ["/bin/sh","/my-script.sh"]
ENTRYPOINT ["/bin/bash","/my-script.sh"]
Run Code Online (Sandbox Code Playgroud)
使用CMD也能达到目的。
| 归档时间: |
|
| 查看次数: |
254025 次 |
| 最近记录: |