- Right off the bat I see a couple things, like
EXPOSE
First, in your Docker config you are missing the
Expose
option/line such as:
EXPOSE 4200
Insert it before your last RUN command in the docker file, to allow the port in the container (for e.g. port 4200) so the mapping from compose works (80:4200)
Its forwarding port 80 to 4200, essentially mapping your angular app.
- Update your config file: A good ref sample of sanitized docker config. You should compare your image with this to update your install with yarn, and copy to the correct output dir. etc.
FROM node:13.3.0 AS compile-image
// install
RUN npm install -g yarn
WORKDIR /opt/ng
COPY .npmrc package.json yarn.lock ./
RUN yarn install
ENV PATH="./node_modules/.bin:$PATH"
# configure your expose port
#expose the port
EXPOSE 4200
COPY . ./
RUN ng build --prod
FROM nginx
COPY docker/nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=compile-image /opt/ng/dist/app-name /usr/share/nginx/html
You may need to forward the port from the container to your system / host :
docker run -p 4200:4200 test:latest