Skip to content

Docker{target="_blank"}

Dockerfile

dockerfile
FROM node:latest

WORKDIR /app

COPY . .

ARG VITE_ENV=development

RUN npm install -g http-server

EXPOSE 8080

CMD ["http-server", "-p", "8080"]
CMD ["tail", "-f", "/dev/null"]

DOCKER-COMPOSE

docker-compose.yml

docker-compose up --build 每次执行都要先构建(如果 yaml 文件内有构建命令的话)

docker-compose up --build myservice 只想重新构建特定的服务

docker-compose build --no-cache 只构建镜像,不执行

docker-compose up --env-file env_vars.txt

docker-compose up -d --pull 拉取镜像并后台执行

docker-compose up --pull always 每次执行都拉取最新镜像

yaml
version: '3'
services:
    mysql:
        image: mysql:latest
        restart: unless-stopped
        environment:
            MYSQL_ROOT_PASSWORD: my_password
            MYSQL_DATABASE: wordpress
            MYSQL_USER: wordpress_user
            MYSQL_PASSWORD: wordpress_password
        volumes:
            - mysql_data:/var/lib/mysql
    wordpress:
        ports:
            - '8080:80'
        build:
            context: ./
            dockerfile: Dockerfile
            args:
                - VITE_TEST:${VITE_TEST} // export VITE_ENV=production && docker compose up --build
        environment:
            WORDPRESS_DB_HOST: ${WORDPRESS_DB_HOST}
            WORDPRESS_DB_USER: wordpress_user
            WORDPRESS_DB_PASSWORD: wordpress_password

volumes:
    mysql_data:
shell
docker compose up -d #启动容器

tracks

多阶段构建
shell
# 第一个阶段:基于 Node.js 镜像构建应用
FROM node:14 AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build

# 第二个阶段:基于 Nginx 镜像部署应用
FROM nginx:1.21
COPY --from=builder /app/dist /usr/share/nginx/html
文件复制
shell
docker cp /path/to/file.txt my-container:/app
构建日志
shell
# 用该命令在构建的时候会在 console 保留 ls 等输出内容
docker compose --progress=plain --no-cache build
tag

docker tag <本地镜像名>:<标签> <仓库地址>/<项目名>/<镜像名>:<标签>

docker push <仓库地址>/<项目名>/<镜像名>:<标签>

build and run
shell
docker build -t name:tag . #构建
docker run --name my_docker -p 80:3000 -v /somedir:/etc/user:ro -e KEY1=VALUE1 -d nginx:latest #运行镜像
# -p 是端口映射
# -v 是指定数据卷挂载目录
# -e 是指定环境变量
# -d 是后台运行
# :ro 代表 readonly :rw 代表可读写
exec container
shell
docker exec -it 9df70f9a0714 /bin/bash
# id 或者容器名都可以

Last updated: