目录
- Dockerfile
- 构建
- 代码
- 测试
Dockerfile
FROM quay.io/quarkus/ubi-quarkus-native-image:22.3-java11 AS build
WORKDIR /workspace
COPY . .
RUN ./mvnw -DskipTests=true clean package -Dnative -U
# Stage 2: Create the minimal runtime image
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6
WORKDIR /work/
RUN chown 1001 /work \
&& chmod "g+rwX" /work \
&& chown 1001:root /work
COPY --from=build /workspace/target/*-runner /work/application
EXPOSE 8080
USER 1001
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
构建
-
构建命令
docker build -t your_image_name -f Dockerfile .
构建镜像的时间比较长,需要等待一下,耐心呦~
特殊说明: -
-t your_image_name用于指定构建的镜像名称。
-
-f Dockerfile用于指定要使用的Dockerfile。如果Dockerfile不在当前目录,需要提供完整路径。
-
.表示Dockerfile所在的当前目录。
特别用法:docker build -t your_image_name .
-
Dockerfile的文件名为Dockerfile
-
Dockerfile位于构建上下文的根目录中。
-
运行命令
docker run -i --rm -p 9096:8080 -p 9098:9096 test
代码
引入lombok的依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>compile</scope>
</dependency>
实体类以及Controller层
@Path("/users")
public class UserAdapter {
@GET
@Path("/get-username/reflect")
public String getUser() throws Exception {
User users = new User();
Class<? extends User> aClass = users.getClass();
Field username = aClass.getDeclaredField("username");
username.setAccessible(true);
username.set(users,"反射用户名");
return users.getUsername();
}
}
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {
private String username;
}
测试
请求访问成功