Dockerfile文件
Dockerfile文件是用来构建镜像的文本文件,文本文件中包含了一系列构建镜像所需的指令和说明
java基础环境
- Dockerfile
# 基础镜像版本
FROM java:latest
# 设置工作目录
WORKDIR /app
# 复制初始文件到工作目录中
COPY . /app
# 设置Java环境变量
ENV PATH=$PATH:$JAVA_HOME/bin
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
# 编译
RUN ["/usr/lib/jvm/java-8-openjdk-amd64/bin/javac","Docker_java.java"]
# 运行
ENTRYPOINT ["/usr/lib/jvm/java-8-openjdk-amd64/bin/java", "Docker_java"]
Dockerfile文件需要在当前工作目录下编写,Docker_java.java文件也需要在当前工作目录下
- Docker_java.java
import java.util.*;
public class Docker_java{
public static void main(String[] args){
System.out.println("Hello Docker!");
System.out.println(new Date());
}
}
- build命令和启动命令
# -rm 表示构建完成后删除中间镜像
# -f 表示指定Dockerfile文件,默认为当前目录下的Dockerfile文件
# -t 表示对镜像打tag
docker build --rm -f "Dockerfile" -t docker_java:0.0.1
#运行命令
docker run docker_java:0.0.1
## mysql环境
> 构建一个账号名称为test,密码为test并且自定义初始化sqlmysql容器
- Dockerfile
```bash
#基础版本
FROM mysql:5.7.22
#环境变量
ENV TZ=Asia/Shanghai \
MYSQL_DATABASE=test \
MYSQL_USER=test \
MYSQL_PASSWORD=test \
MYSQL_ROOT_PASSWORD=test
#将sql目录下的文件全部拷贝到目标文件夹下
COPY sql/. /docker-entrypoint-initdb.d
- init.sql
CREATE DATABASE IF NOT EXISTS `test`;
USE `test`;
DROP TABLE IF EXISTS `table_a`;
CREATE TABLE `table_a` (
`sync_pk` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL ,
`hos_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`create_time` varchar(19) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`study_iuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
`study_content` mediumtext COLLATE utf8mb4_unicode_ci ,
`study_state` int(255) DEFAULT NULL,
`remark` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL ,
PRIMARY KEY (`sync_pk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ;
- 构建命令
docker build --rm -f "Dockerfile" -t mysqlc:0.0.1 .
- 运行命令
#与mysql启动一致
docker run -itd --name mysql_local mysqlc:0.0.1