add support of arm64 architecture for the following samples: * aspnet-mssql * elasticsearch-logstash-kibana * nginx-aspnet-mysql * nginx-flask-mysql * nginx-golang-mysql * react-java-mysql * sparkjava-mysql * wordpress-mysql * react-express-mysql * react-express-mongodb Signed-off-by: Guillaume Lours <guillaume.lours@docker.com>
Snippet of backend(Node.js)DockerFile
You will find this DockerFile file in the root directory of the project.
FROM node:13.13.0-stretch-slim
#Argument that is passed from docer-compose.yaml file
ARG NODE_PORT
#Echo the argument to check passed argument loaded here correctly
RUN echo "Argument port is : $NODE_PORT"
# Create app directory
WORKDIR /usr/src/app
#COPY . .
COPY . .
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
RUN npm install
#In my case my app binds to port NODE_PORT so you'll use the EXPOSE instruction to have it mapped by the docker daemon:
EXPOSE ${NODE_PORT}
CMD npm run dev
Explanation of backend(Node.js) DockerFile
-
The first line tells Docker to use another Node image from the DockerHub. We’re using the official Docker image for Node.js and it’s version 10 image.
-
On second line we declare argument
NODE_PORTwhich we will pass it fromdocker-compose. -
On third line we log to check argument is successfully read
-
On fourth line we sets a working directory from where the app code will live inside the Docker container.
-
On fifth line, we are copying/bundling our code working directory into container working directory on line three.
-
On line seven, we run npm install for dependencies in container on line four.
-
On Line eight, we setup the port, that Docker will expose when the container is running. In our case it is the port which we define inside
.envfile, read it fromdocker-composethen passed as a argument to the (backend)DockerFile. -
And in last, we tell docker to execute our app inside the container by using node to run `npm run dev. It is the command which I registered in package.json in script section.