我正在尝试做一个 Dockerized Angular + Json-Server 应用程序,但我在设置 json-server 时遇到了麻烦,尽管我将其安装在 Dockerfile 中,但使用 docker 日志告诉我找不到命令 json-server:
这就是我的 Dockerfile 的样子:
FROM node:18 as CervantesJuradoBuild
ARG workdir="/home/CervantesJurado"
WORKDIR /appContainer
COPY /home/CervantesJurado/angular/A_Animals /appContainer
RUN echo pwd
WORKDIR /appContainer/A_Animals
RUN npm install -g @angular/cli
RUN npm cache clean --force
RUN npm install --legacy-peer-deps
RUN npm run build
FROM nginx as CervantesJuradoApp
ENV name="CervantesJurado"
LABEL author="$name"
RUN apt-get update && \
apt-get install -y openssh-server nodejs npm
RUN npm install -g json-server
RUN mkdir -p /run/sshd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN useradd -m -s /bin/bash $name && \
mkdir -p /home/$name/.ssh && \
chmod 700 /home/$name/.ssh
COPY /home/CervantesJurado/angular/A_Animals/id_rsa.pub /home/$name/.ssh/authorized_keys
COPY /home/CervantesJurado/angular/animals.json /home/$name/
RUN chown -R $name:$name /home/$name/.ssh && \
chmod 600 /home/$name/.ssh/authorized_keys
USER root
EXPOSE 22 80 3000
CMD ["sh", "-c", "json-server --watch /home/$name/animals.json --host 0.0.0.0 & service ssh start && nginx -g 'daemon off;'"]
COPY --from=CervantesJuradoBuild /appContainer/dist/a-animals /usr/share/nginx/html
这就是我运行它的方式:
docker run -d -p 8080:80 -p 2222:22 -p 3000:3000 --name cervantes_container cervantesjurado:prueba3
运行 docker run 命令后,我使用 docker 日志查看发生了什么:
docker logs cervantes_container
sh: 1: json-server: not found
如果有人作为最后一个资源来到这里并且您绝望了,请不要使用 json-server,而是使用 npm install [电子邮件受保护] :)