Skip to content

制作镜像

目录


参考资料:

制作镜像

Dockerfile

Dockerfile 是一个文本文件,用来配置镜像的构建过程,包括基础镜像,运行命令,环境变量等

Dockerfile
# 基础镜像 FROM <image>:<tag>
FROM openjdk:17-jdk-alpine

# 添加文件到镜像
ADD ../../opchat-server/target/opchat-server-0.0.2-SNAPSHOT.jar app.jar

# 运行命令
CMD java -jar app.jar

Docker Compose

安装

bash
sudo apt-get install docker-compose

Docker Compose 是一个用来定义和运行多容器的 Docker 应用的工具,使用 YAML 文件来配置应用的服务

例如:

yml
version: "3"
services:
  opchat-server:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - ./opchat-server/target:/app
    depends_on:
      - mysql
    links:
      - mysql
  mysql:
    image: mysql:8.0.36
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: opchat
    ports:
      - "3306:3306"
    volumes:
      - ./mysql:/var/lib/mysql

Mysql

Dockerfile
FROM mysql:8.0.36
# 放在docker-entrypoint-initdb.d/目录下的sql文件会在容器启动时自动执行
COPY ./createDatabases.sql /docker-entrypoint-initdb.d/createDatabases.sql
COPY ./data.sql /docker-entrypoint-initdb.d/data.sql
EXPOSE 3306
CMD mysqld

Nginx

Dockerfile
FROM nginx
# 移动静态文件到nginx的html目录下
COPY ./dist /usr/share/nginx/html
# 移动nginx配置文件到nginx的配置文件目录下
COPY ./nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
# 使用nginx的daemon off启动方式
CMD  nginx -g 'daemon off;'

参考资料:

java

Dockerfile
FROM openjdk:17-jdk-alpine
ADD ./target/opchat-server-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar

mino

minio 有个问题,指定的用户名和密码长度不能太小,并且他的 docker 容器里面没有 root 权限

真有需要的可以考虑自己在 unix 上构建镜像

参考资料: 私有云存储 Minio Docker 镜像无法启动,提示:Adding local Minio host to 'mc' configuration一文带你认识 Kubernetes 中的非根容器:non-root containers | CSDN

minio 启动报错

无法启动,并报错如下

minio 16:16:53.12 INFO  ==> Adding local Minio host to 'mc' configuration...

原因:配置的帐号长度需要大于 5 位,密码长度需要大于 8 位

解决:修改配置文件中的帐号和密码

参考资料:

node

Dockerfile
FROM node:16 # 标准包一般会比较大,可以选择 alpine 版本 FROM node:16-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

打包

bash
docker build -t <image>:<tag> .

Copyright © 2022 田园幻想乡 浙ICP备2021038778号-1