Đầu tiên hãy vào tài khoản Docker Hub của bạn và thực hiện repo. Đây là một ảnh chụp màn hình tài khoản Docker Hub của tôi:
Từ pic, bạn có thể thấy repo của tôi là Chu chugg '
Bây giờ đi vào repo và đặt nó ở chế độ riêng tư bằng cách nhấp vào tên hình ảnh của bạn. Vì vậy, đối với tôi, tôi đã nhấp vào chu chugg / gen_commited_image, sau đó tôi đã đi tới Cài đặt -> Đặt riêng tư. Sau đó, tôi làm theo hướng dẫn trên màn hình
CÁCH TẢI LÊN HÌNH ẢNH DOCKER CỦA BẠN TRÊN DUBER HUB
Phương pháp # 1 = Đẩy hình ảnh của bạn qua dòng lệnh (cli)
1) docker commit <container ID> <repo name>/<Name you want to give the image>
Vâng, tôi nghĩ rằng nó phải là ID container. Nó có thể không thể là ID hình ảnh.
Ví dụ = docker commit 99e078826312 chuangg/gene_commited_image
2) docker run -it chaung/gene_commited_image
3) docker login --username=<user username> --password=<user password>
Ví dụ = docker login --username=chuangg --email=gc.genechaung@gmail.com
Vâng, bạn phải đăng nhập trước. Đăng xuất bằng cách sử dụng docker
4) docker push chuangg/gene_commited_image
Phương pháp # 2 = Đẩy hình ảnh của bạn bằng pom.xml và dòng lệnh.
Lưu ý, tôi đã sử dụng Hồ sơ Maven có tên là build build-docker. Nếu bạn không muốn sử dụng hồ sơ, chỉ cần xóa<profiles>, <profile>, and <id>build-docker</id>
yếu tố.
Bên trong tệp cha mẹ:
<profiles>
<profile>
<id>build-docker</id>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.18.1</version>
<configuration>
<images>
<image>
<name>chuangg/gene_project</name>
<alias>${docker.container.name}</alias>
<!-- Configure build settings -->
<build>
<dockerFileDir>${project.basedir}\src\docker\vending_machine_emulator</dockerFileDir>
<assembly>
<inline>
<fileSets>
<fileSet>
<directory>${project.basedir}\target</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</inline>
</assembly>
</build>
</image>
</images>
</configuration>
<executions>
<execution>
<id>docker:build</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Docker Terminal Command để triển khai Docker Image (từ thư mục chứa pom.xml của bạn) = mvn clean deploy -Pbuild-docker docker:push
Lưu ý, điểm khác biệt giữa Phương thức # 2 và # 3 là Phương thức # 3 có thêm <execution>
phần triển khai.
Phương pháp # 3 = Sử dụng Maven để tự động triển khai đến Docker Hub
Thêm nội dung này vào tệp cha mẹ của bạn:
<distributionManagement>
<repository>
<id>gene</id>
<name>chuangg</name>
<uniqueVersion>false</uniqueVersion>
<layout>legacy</layout>
<url>https://index.docker.io/v1/</url>
</repository>
</distributionManagement>
<profiles>
<profile>
<id>build-docker</id>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.18.1</version>
<configuration>
<images>
<image>
<name>chuangg/gene_project1</name>
<alias>${docker.container.name}</alias>
<!-- Configure build settings -->
<build>
<dockerFileDir>${project.basedir}\src\docker\vending_machine_emulator</dockerFileDir>
<assembly>
<inline>
<fileSets>
<fileSet>
<directory>${project.basedir}\target</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</inline>
</assembly>
</build>
</image>
</images>
</configuration>
<executions>
<execution>
<id>docker:build</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
<id>docker:push</id>
<phase>install</phase>
<goals>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Chuyển đến thư mục C: \ Users \ Gene.docker \ và thêm tệp này vào tệp config.json của bạn:
Bây giờ trong Docker Quickstart Terminal type = mvn clean install -Pbuild-docker
Đối với những bạn không sử dụng Maven Profiles, chỉ cần gõ mvn clean install
Dưới đây là ảnh chụp màn hình của thông báo thành công:
Đây là pom.xml đầy đủ của tôi và ảnh chụp màn hình cấu trúc thư mục của tôi:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gene.app</groupId>
<artifactId>VendingMachineDockerMavenPlugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Maven Quick Start Archetype</name>
<url>www.gene.com</url>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.gene.sample.Customer_View</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<distributionManagement>
<repository>
<id>gene</id>
<name>chuangg</name>
<uniqueVersion>false</uniqueVersion>
<layout>legacy</layout>
<url>https://index.docker.io/v1/</url>
</repository>
</distributionManagement>
<profiles>
<profile>
<id>build-docker</id>
<properties>
<java.docker.version>1.8.0</java.docker.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.18.1</version>
<configuration>
<images>
<image>
<name>chuangg/gene_project1</name>
<alias>${docker.container.name}</alias>
<!-- Configure build settings -->
<build>
<dockerFileDir>${project.basedir}\src\docker\vending_machine_emulator</dockerFileDir>
<assembly>
<inline>
<fileSets>
<fileSet>
<directory>${project.basedir}\target</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</inline>
</assembly>
</build>
</image>
</images>
</configuration>
<executions>
<execution>
<id>docker:build</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
<id>docker:push</id>
<phase>install</phase>
<goals>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Đây là thư mục Eclipse của tôi:
Đây là Dockerfile của tôi:
FROM java:8
MAINTAINER Gene Chuang
RUN echo Running Dockerfile in src/docker/vending_machine_emulator/Dockerfile directory
ADD maven/VendingMachineDockerMavenPlugin-1.0-SNAPSHOT.jar /bullshitDirectory/gene-app-1.0-SNAPSHOT.jar
CMD ["java", "-classpath", "/bullshitDirectory/gene-app-1.0-SNAPSHOT.jar", "com/gene/sample/Customer_View" ]
Lỗi thường gặp # 1:
Giải pháp cho Lỗi # 1 = Không đồng bộ hóa <execution>
với giai đoạn triển khai maven vì sau đó maven cố gắng triển khai hình ảnh 2x và đặt dấu thời gian trên bình. Đó là lý do tại sao tôi sử dụng <phase>install</phase>
.