docker - 我无法启动 docker 容器 "webserver"并出现以下错误

标签 docker docker-compose

我在 VM 的 ubuntu 中使用它

$ sudo docker 镜像

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
plamobi-model-simulator   latest              dfc3d0c4370f        15 minutes ago      428MB
mongo                     latest              4095dbcdd495        28 hours ago        364MB
certbot/certbot           latest              ce913a50e000        2 days ago          164MB
node                      10-alpine           547f0f86b4ad        3 days ago          80.5MB
nginx                     mainline-alpine     36189e6707f4        7 days ago          21.5MB

$ sudo docker ps -a

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                    PORTS                            NAMES
4b9758c927a3        nginx:mainline-alpine     "nginx -g 'daemon of…"   16 minutes ago      Created                   80/tcp, 0.0.0.0:3000->3000/tcp   webserver
ffc2a78c46bc        plamobi-model-simulator   "docker-entrypoint.s…"   16 minutes ago      Up 16 minutes             0.0.0.0:3001->3001/tcp           plamobi
f4e501383536        36189e6707f4              "nginx -g 'daemon of…"   19 hours ago        Exited (0) 19 hours ago                                    stupefied_lewin
390354087d0f        nginx:mainline-alpine     "nginx -g 'daemon of…"   20 hours ago        Created                                                    390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_webserver
fc95bd7b3e3a        mongo                     "docker-entrypoint.s…"   22 hours ago        Up 19 hours               0.0.0.0:27017->27017/tcp         plamobi-mongodb

$ sudo docker-compose up --build -d

> WARNING: The PWD variable is not set. Defaulting to a blank string.
> Removing webserver Building api.plamobi Step 1/10 : FROM
> node:10-alpine  ---> 547f0f86b4ad Step 2/10 : RUN mkdir -p
> /home/node/app/node_modules && chown -R node:node /home/node/app  --->
> Using cache  ---> 889c483276f7 Step 3/10 : WORKDIR /home/node/app 
> ---> Using cache  ---> c5766592fece Step 4/10 : COPY package*.json /home/node/app/  ---> Using cache  ---> 88320bf22fe3 Step 5/10 : USER
> node  ---> Using cache  ---> 14d42a11b6df Step 6/10 : RUN npm install 
> ---> Using cache  ---> b575befa4614 Step 7/10 : RUN npm audit fix  ---> Using cache  ---> c41b00f02419 Step 8/10 : COPY --chown=node:node . /home/node/app/  ---> 45d9cdeee055 Step 9/10 : EXPOSE 3001  --->
> Running in 40a0d7ad5aa2 Removing intermediate container 40a0d7ad5aa2 
> ---> defbe9ef49ec Step 10/10 : CMD [ "node", "app.js" ]  ---> Running in 077d833dc637 Removing intermediate container 077d833dc637  --->
> 324dd58bd4e1 Successfully built 324dd58bd4e1 Successfully tagged
> plamobi-model-simulator:latest plamobi-mongodb is up-to-date
> Recreating plamobi ...  Recreating plamobi ... done Recreating
> 390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_webserver
> ...  Recreating
> 390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354Recreating
> 390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_webserver
> ... error ERROR: for
> 390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_390354087d0f_webserver
> Cannot start service webserver: error while mounting volume
> '/var/lib/docker/volumes/plamobimodelsimulator_web-root/_data': failed
> to mount local volume: mount
> /views/:/var/lib/docker/volumes/plamobimodelsimulator_web-root/_data,
> flags: 0x1000: no such file or directory
> 
> ERROR: for webserver  Cannot start service webserver: error while
> mounting volume
> '/var/lib/docker/volumes/plamobimodelsimulator_web-root/_data': failed
> to mount local volume: mount
> /views/:/var/lib/docker/volumes/plamobimodelsimulator_web-root/_data,
> flags: 0x1000: no such file or directory ERROR: Encountered errors
> while bringing up the project.

docker-compose.yml

version: '3'

services:
  api.plamobi:
    build:
      context: .
      dockerfile: Dockerfile
    image: plamobi-model-simulator
    container_name: plamobi
    ports:
      - "3001:3001"
    restart: unless-stopped
    networks:
      - app-network
    depends_on:
      - mongo

  mongo:
    container_name: plamobi-mongodb
    image: mongo
    ports:
      - "27017:27017"
    volumes:
      - ./data:/data/db
    restart: unless-stopped
    networks:
      - app-network

  webserver:
    image: nginx:mainline-alpine
    container_name: webserver
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - web-root:/var/www/html
      - ./nginx-conf:/etc/nginx/conf.d
      - certbot-etc:/etc/letsencrypt
      - certbot-var:/var/lib/letsencrypt
    depends_on:
      - api.plamobi
    networks:
      - app-network

  certbot:
    image: certbot/certbot
    container_name: certbot
    volumes:
      - certbot-etc:/etc/letsencrypt
      - certbot-var:/var/lib/letsencrypt
      - web-root:/var/www/html
    depends_on:
      - webserver
    command: certonly --webroot --webroot-path=/var/www/html --email contact@plamobi.com --agree-tos --no-eff-email --staging -d api.plamobi.com  

volumes:
  certbot-etc:
  certbot-var:
  web-root:
    driver: local
    driver_opts:
      type: none
      device: ${PWD}./views/
      o: bind

networks:
  app-network:
    driver: bridge 

最佳答案

您没有在 docker-compose 文件中设置环境变量 $PWD 并且您可能没有使用 .env 文件。我不熟悉 MacOS,但显然 shell 变量中也没有 $PWD 。您需要使用 .env 文件或直接在 docker-compose 文件中进行设置。另外,${PWD}./views/中的点不对,改成${PWD}/views/

关于docker - 我无法启动 docker 容器 "webserver"并出现以下错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59782721/

相关文章:

node.js - Kafka 无法连接 docker 上的代理

docker - 无法在当前目录或具有完整路径的目录中添加文件

node.js - Docker Node App Postgres错误 “Connection terminated unexpectedly”

mysql - 将 Wordpress 站点移动到 Docker : Error establishing DB connection

docker - docker-compose.yml 版本 3 中的 mem_limit

selenium - 如何在docker-compose.yml中配置Selenium Grid(最大 session 数)

docker 推送到 gcr.io 失败并显示 "denied: Token exchange failed for project"

c# - 我在 docker 容器上的源代码在哪里

django - AWS 上的多容器 Docker

docker - docker-compose:在 `php-fpm`结束之前,有什么方法可以阻止 `db`启动吗?