制作镜像
目录
参考资料:
制作镜像
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> .