首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dockerfile中安装mysql和java jdk-11,并在容器中运行我的spring引导jar文件。

在Dockerfile中安装mysql和java jdk-11,并在容器中运行我的spring引导jar文件。
EN

Stack Overflow用户
提问于 2022-05-11 18:44:42
回答 4查看 1.6K关注 0票数 0

我将安装MySQL和Jdk-11,并在容器上运行jar文件(spring项目)。如果任何人在这一领域有经验,请帮助。谢谢

这是我的sql配置

代码语言:javascript
复制
    host='localhost',
                port=3306,
                user='root',
                passwd='password',
代码语言:javascript
复制
FROM ubuntu
RUN apt-get update
RUN apt-get -y install mysql-server
RUN apt-get -y install openjdk-11-jdk
COPY target/orderCodeBackEnd-0.0.1-SNAPSHOT.jar /usr/app/  
WORKDIR /usr/app
ENTRYPOINT ["java", "-jar", "orderCodeBackEnd-0.0.1-SNAPSHOT.jar"]
EN

回答 4

Stack Overflow用户

发布于 2022-05-12 08:52:29

代码语言:javascript
复制
//Dockerfile
FROM openjdk:11
ADD target/*.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
代码语言:javascript
复制
//Dockerfile just desame to other one
FROM openjdk:11
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
代码语言:javascript
复制
//docker-compose.yaml
services:

  yourapp:
    image: yourAppJarName:latest
    container_name: yourapp
    depends_on:
      - mysqldb
    restart: always
    build:
      context: ./
      dockerfile: Dockerfile
    
    ports: 
      - "9090:9090"
    environment:
      MYSQL_HOST: mysqldb
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_PORT: 3306

  mysqldb:
    image: mysql:8.0.28
    restart: unless-stopped
    container_name: mysqldb
    ports: 
      - "3307:3306"
    
    cap_add:
      - SYS_NICE
    environment:
      MYSQL_DATABASE: dbname
      MYSQL_ROOT_PASSWORD: root 
代码语言:javascript
复制
//application.properties or yaml
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/dbname
    username: root
    password: root
代码语言:javascript
复制
//customize you jar name in pom.xml

</dependency>
    
    <dependency>
     ..........
     </dependency>
    <dependency>
     ..........
     </dependency>

</dependencies>
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>   
            </plugin>
        </plugins>
        <finalName>yourAppJarName</finalName>
    </build>

  
</project>
代码语言:javascript
复制
Then click Project file then "Run as" then click maven "Install"

you must also open your mysql then connect to 3307 since 3307 is expose
票数 1
EN

Stack Overflow用户

发布于 2022-05-11 19:51:16

  1. 通过从MySQL Docker存储库中提取映像来创建MySQL / MariaDB容器。
代码语言:javascript
复制
sudo docker run --detach --env MARIADB_PASSWORD=secret --env MARIADB_ROOT_PASSWORD=secret -p 3306:3306 --add-host=YOUR_DESIRED_HOSTNAME:YOUR_LOCAL_MACHINE_IP mariadb:latest
  • --分离

将以分离模式运行服务器。

  • -env MARIADB_PASSWORD=secret --env MARIADB_ROOT_PASSWORD=secret

为DB服务器密码设置环境变量。您可以根据自己的意愿定义密码。对我来说,我把它设置为secret

  • -p 3306:3306

港口映射,集装箱内部港口3306将映射到3306外部集装箱港口。

  • --add-host=YOUR_DESIRED_HOSTNAME:YOUR_LOCAL_MACHINE_IP

如果要与码头主机建立远程连接,请不要忘记更改YOUR_DESIRED_HOSTNAMEYOUR_LOCAL_MACHINE_IP值。通常,如果您在同一台开发机器上运行docker,主机名可以是localhost。在这种情况下,我们甚至不需要这个--add-host标志。

  1. 现在,如果在本地运行应用程序,则可以使用以下连接参数将应用程序与数据库连接。
代码语言:javascript
复制
    host: YOUR_LOCAL_MACHINE_IP
    port: 3306
    username: root
    password: secret

但是,如果您想要从停靠器容器中访问spring引导应用程序的db,则可能必须使用其他工具-- docker -组合。原因是您的主机IP地址可能无法在您的码头容器内工作。

我认为,下面的git存储库将有助于您理解如何编写您的第一个坞-撰写。这个存储库有一个readme.md文件,您可以从中获得帮助。

https://gitlab.com/mainul35/traver-auth

票数 0
EN

Stack Overflow用户

发布于 2022-05-11 19:52:25

在独立的容器中分离不同的服务是很好的做法,从而创建一个不太相关的体系结构。

接下来,在码头枢纽中,我们可以找到有用的,可以使用的图像。我们可以从命令行中提取所有图像并创建所有服务,但是有更好的方法- 码头组成。所以第一个文件,您需要的是docker-compose.yml:

代码语言:javascript
复制
version: '2'
services:
  mysql:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
    ports:
      - 3306:3306
  app:
    build: .
    ports:
      - 8080:8080
    depends_on:
      - mysql

在这个文件中,我们描述了这两个服务:

  • mysql:
    • 图片:图像来自码头枢纽,这是正式的停靠点mysql图像
    • 环境变量:U可以在图像文档中找到所有可能的变量
    • 端口:在那里,我们可以指定要公开哪个端口

  • app:
    • 构建: Dockerfile的路径
    • depends_on:在您创建此服务之前,先创建mysql

应用程序的Dockerfile:

代码语言:javascript
复制
FROM openjdk:11-jre

COPY target/orderCodeBackEnd-0.0.1-SNAPSHOT.jar /usr/app/

WORKDIR /usr/app

ENTRYPOINT ["java", "-jar", "orderCodeBackEnd-0.0.1-SNAPSHOT.jar"]

现在,您可以轻松地从终端启动这些服务。

代码语言:javascript
复制
docker compose up -d

您必须位于docker-come.yml所在的目录或指定的-f参数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72206127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档