可以參照上一片的 javascript service
Docker 下載
curl -fsSL https://get.docker.com | sudo bash
Docker compose 下載
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
建立 Dockerfile 以建立image
$file 是js檔案的位置
$PATH 是working directory,請不要使用在PATH中加入~,使用絕對路徑
#首先先load node的images,來當作web app
FROM node:14
#建立自己的work dir
WORKDIR $PATH
#把package.json複製進去
COPY package*.json ./
RUN npm install
#bundle app source
COPY . .
#打開5001 port
EXPOSE 5001
#執行command
CMD ["node", "$file"]
從官網複製過來的解釋
FROM: creates a layer from the ubuntu:18.04 Docker image.
COPY: adds files from your Docker client’s current directory.
RUN: builds your application with make.
CMD: specifies what command to run within the container.
WORKDIR: setup the dockerfile
中文版解釋
之後把dockerfile build成一個images
$name 為images的名字
sudo docker build . -t $name
測試images所建立的container
- 若是要測試自己的images,可以先把images建立成一個container玩看看
docker run -p 8080:5001 -d <images_id>
看自己contianer的狀態
docker ps -a
docker logs <container_id>
8080為外部的port
5001為container內部的port
若是要刪除container
docker stop <container_id>
docker rm <container_id>
若是要刪除images
docker rmi <images_id>
若是要進入container中的 bash
docker run <container_id> -it /bin/bash
建立docker-compose管理container
docker-compose可以一次管理多個docker container,只要轉寫好yml檔案,建立image之間的關係,就可以一鍵啟動或停止。
version: "2"
services:
node:
image: $name
environment:
- NODE_ENV=production
volumes:
- ./:$PATH
expose:
- "5001"
ports:
- "8080:5001"
替換掉$name & $PATH
8080為外部的port
5001為container中的port
讓他在背景跑起來,在有docker-compose.yml的目錄中做
sudo docker-compose up -d
觀看docker-compose的狀態
docker-compose ps