我将安装MySQL和Jdk-11,并在容器上运行jar文件(spring项目)。如果任何人在这一领域有经验,请帮助。谢谢
这是我的sql配置
host='localhost',
port=3306,
user='root',
passwd='password',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"]发布于 2022-05-12 08:52:29
//Dockerfile
FROM openjdk:11
ADD target/*.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]//Dockerfile just desame to other one
FROM openjdk:11
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]//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 //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//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>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发布于 2022-05-11 19:51:16
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将以分离模式运行服务器。
为DB服务器密码设置环境变量。您可以根据自己的意愿定义密码。对我来说,我把它设置为secret
港口映射,集装箱内部港口3306将映射到3306外部集装箱港口。
如果要与码头主机建立远程连接,请不要忘记更改YOUR_DESIRED_HOSTNAME和YOUR_LOCAL_MACHINE_IP值。通常,如果您在同一台开发机器上运行docker,主机名可以是localhost。在这种情况下,我们甚至不需要这个--add-host标志。
host: YOUR_LOCAL_MACHINE_IP
port: 3306
username: root
password: secret但是,如果您想要从停靠器容器中访问spring引导应用程序的db,则可能必须使用其他工具-- docker -组合。原因是您的主机IP地址可能无法在您的码头容器内工作。
我认为,下面的git存储库将有助于您理解如何编写您的第一个坞-撰写。这个存储库有一个readme.md文件,您可以从中获得帮助。
发布于 2022-05-11 19:52:25
在独立的容器中分离不同的服务是很好的做法,从而创建一个不太相关的体系结构。
接下来,在码头枢纽中,我们可以找到有用的,可以使用的图像。我们可以从命令行中提取所有图像并创建所有服务,但是有更好的方法- 码头组成。所以第一个文件,您需要的是docker-compose.yml:
version: '2'
services:
mysql:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=password
ports:
- 3306:3306
app:
build: .
ports:
- 8080:8080
depends_on:
- mysql在这个文件中,我们描述了这两个服务:
应用程序的Dockerfile:
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"]现在,您可以轻松地从终端启动这些服务。
docker compose up -d您必须位于docker-come.yml所在的目录或指定的-f参数中。
https://stackoverflow.com/questions/72206127
复制相似问题