Docker 配置(免费)。编写容器化配置:适用于应用容器化、环境一致性、CI/CD 部署场景,解决「Dockerfile 写不对、镜像太大、容器跑不起来」的问题。用户只需提供相关信息,AI 即按内置提示词模板输出完整结果。
编写容器化配置:适用于应用容器化、环境一致性、CI/CD 部署场景,解决「Dockerfile 写不对、镜像太大、容器跑不起来」的问题。最终目的:产出可直接套用的 Docker 配置提示词:用户只需给应用信息,AI 即输出可构建的配置方案。本技能内置可直接套用的提示词模板,加载后 AI 按模板工作,无需额外配置。
当用户提出以下类型的需求时,激活本技能:
激活后,按下方【内置提示词模板】执行:将用户提供的信息填入模板占位处(____),直接输出完整结果;用户未提供的信息保持占位并提示其补充。
【角色设定】 你是容器化工程师,擅长编写规范、安全、可构建的 Docker 配置。 【任务】 根据我的应用信息,帮我编写 Docker 配置。 【我会提供的信息】 1. 应用类型(前端/后端/数据库/全栈):____ 2. 语言与运行时(Node/Python/Java/Go 等及版本):____ 3. 依赖与启动命令:____ 4. 需要暴露的端口:____ 5. 环境变量/配置文件(如有):____ 【编写要求】 1. 输出 Dockerfile(可直接构建)+ 必要的 docker-compose.yml(如多服务)。 2. Dockerfile 规范:基础镜像选型(带版本、尽量小)、依赖安装分层(利用缓存)、非 root 运行、多阶段构建(如适用)。 3. 安全要求:不把密钥写进镜像、最小化暴露端口、设置资源限制。 4. 附构建与运行命令(build/run/compose)。 5. 附验证方法(怎么确认容器正常)。 【输出格式】 一、Dockerfile(完整) 二、docker-compose.yml(如需要) 三、构建运行命令 四、安全与优化说明(3 条) 请直接输出,不要询问多余信息;信息缺失处用「____」占位。
____ 占位并提示用户补充。场景描述: 对于大型应用,使用多阶段构建可以显著减少最终镜像的大小。
FROM 指令,例如: FROM node:14 AS build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine AS production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker-compose.yml 中使用多服务,每个服务对应不同的镜像构建阶段。场景描述: 确保容器在安全和性能上达到最佳实践。
RUN useradd -m myuser && chown -R myuser /app
USER myuser
services:
app:
image: my-app
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
docker-compose.yml 中配置网络策略,限制容器之间的通信。场景描述: 确保每次构建的镜像都能正常运行。
HEALTHCHECK --interval=5s --timeout=2s \
CMD curl -f localhost || exit 1
docker-compose 进行集成测试: docker-compose up -d
docker-compose exec app /bin/sh -c "curl -f localhost"
场景描述: 实现容器的日志收集和实时监控。
docker-compose 配置日志驱动: services:
app:
image: my-app
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
logstash:
image: docker.elastic.co/logstash/logstash:7.10.1
kibana:
image: docker.elastic.co/kibana/kibana:7.10.1
docker-compose.yml 中配置 Prometheus 和 Grafana 监控服务。场景描述: 将一个 React 应用容器化。
npm install && npm run buildREACT_APP_API_URL=[API服务地址]FROM node:14 AS build-stage WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:alpine AS production-stage COPY --from=build-stage /app/build /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
version: '3'
services:
web:
image: my-frontend-app
ports:
- "80:80"
environment:
- REACT_APP_API_URL=[API服务地址]
场景描述: 将一个 Spring Boot 应用容器化。
./mvnw clean packageSPRING_PROFILES_ACTIVE=prodFROM maven:3.8-jdk-11 AS build-stage WORKDIR /app COPY pom.xml . RUN mvn dependency:go-offline -B COPY src ./src RUN mvn clean package FROM openjdk:11-jre-slim WORKDIR /app COPY --from=build-stage /app/target/*.jar app.jar EXPOSE 8080 CMD ["java", "-jar", "app.jar"]
version: '3'
services:
backend:
image: my-spring-boot-app
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=prod
场景描述: 将一个 MySQL 数据库容器化。
mysqldMYSQL_ROOT_PASSWORD=rootFROM mysql:5.7 ENV MYSQL_ROOT_PASSWORD root COPY init.sql /docker-entrypoint-initdb.d/
version: '3'
services:
db:
image: my-mysql-db
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
docker-compose 和自动化工具(如 Jenkins、GitLab CI),实现持续集成和部署的自动化。