【发布时间】:2020-04-25 23:26:37
【问题描述】:
我无法使用 Docker 和 docker-compose 运行我的 Vue 应用程序。所有其他应用程序和服务都在运行(一些 .NET 应用程序、nginx-proxy 和letsencrypt-nginx-proxy-companion),但是在运行 vue 应用程序时出现以下错误:
| npm ERR! path /app/package.json
| npm ERR! code ENOENT
| npm ERR! errno -2
| npm ERR! syscall open
| npm ERR! enoent ENOENT: no such file or directory, open '/app/package.json'
| npm ERR! enoent This is related to npm not being able to find a file.
这就是我的 docker-compose.yaml 的样子:
version: "3.7"
services:
nginx-proxy:
image: jwilder/nginx-proxy:latest
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /var/lib/docker/volumes/certs/_data:/etc/nginx/certs:ro
- /var/lib/docker/volumes/vhost/_data:/etc/nginx/vhost.d
- /var/lib/docker/volumes/html/_data:/usr/share/nginx/html
- /var/lib/docker/volumes/config/_data:/etc/nginx/conf.d
- /var/lib/docker/volumes/nginx/_data:/etc/init.d/
depends_on:
- app1
- app2
- vue-app
nginx-proxy-letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nginx-proxy-letsencrypt
environment:
- DEFAULT_EMAIL=mail@mail.com
- NGINX_PROXY_CONTAINER=nginx-proxy
depends_on:
- nginx-proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/lib/docker/volumes/certs/_data:/etc/nginx/certs:rw
- /var/lib/docker/volumes/vhost/_data:/etc/nginx/vhost.d
- /var/lib/docker/volumes/html/_data:/usr/share/nginx/html
app1:
image: user/app1:latest
environment:
- VIRTUAL_HOST=example.com,www.example.com
- LETSENCRYPT_HOST=example.com,www.example.com
volumes:
- /var/lib/docker/volumes/sqllite/_data:/app/data
- /var/lib/docker/volumes/uploadfolder/_data:/app/wwwroot/uploads
app2:
build: ~/app_2
environment:
- VIRTUAL_HOST=app2.example.com,www.app2.example.com
- LETSENCRYPT_HOST=app2.example.com,www.app2.example.com
vue-app:
build: ~/vue_app
environment:
- VIRTUAL_HOST=vueapp.example.com,www.vueapp.example.com
- LETSENCRYPT_HOST=vueapp.example.com,www.vueapp.example.com
volumes:
- .:/app
- /app/node_modules
volumes:
certs:
vhost:
html:
networks:
default:
external:
name: nginx-proxy
还有我用于 vue-app 的 Docker 文件:
# base image
FROM node:12.2.0-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install
RUN npm install @vue/cli@3.7.0 -g
# start app
CMD ["npm", "run", "serve"]
我服务器上的文件结构是:
root
| docker-compose.yaml
|
|__app_2
| Dockerfile (in the project root)
|
|__vue_app
Dockerfile (in the project root)
我错过了什么吗?
【问题讨论】:
-
看看这个类似的post