[英]Dockerize a Maven Project with a Laravel project
我在开发项目时遇到问题。 这个项目包含一个 Laravel 项目,它是我的 API REST。 一些方法调用 Java 项目。 所以,基本上,我有一个与 Java(maven)项目交互的 Laravel 项目。
所有这些都是我的应用程序的后端,所以我决定将所有这些与 docker 组合在一起。 基本上,我有三个容器:
Php 容器由 Dockerfile 构建。 在这个 Dockerfile 中,运行安装 R 软件和 Composer 的命令(对于 Laravel 项目)。 但我也需要包括 Maven。
我已经阅读了很多页面,最好的方法是使用多阶段 Dockerfile,这正是我正在尝试的,但我无法让它工作......
FROM php:8.0-fpm
USER root
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y wget && \
apt-get install -y git && \
apt-get -y install software-properties-common
RUN wget --no-verbose -O /tmp/apache-maven-3.3.9.tar.gz http://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
RUN tar xzf /tmp/apache-maven-3.3.9.tar.gz -C /opt/
RUN ln -s /opt/apache-maven-3.3.9 /opt/maven
RUN ln -s /opt/maven/bin/mvn /usr/local/bin
RUN rm -f /tmp/apache-maven-3.3.9.tar.gz
ENV MAVEN_HOME /opt/maven
RUN apt install -y r-base
RUN docker-php-ext-install pdo pdo_mysql
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
RUN chown -R www-data:www-data /var/www
RUN chown -R www-data:www-data /var/www
WORKDIR /var/www/html
USER www-data:www-data
FROM maven:3.8.4-openjdk-17 AS build
WORKDIR /app
COPY ./machine-learning/RecommendationSystem/pom.xml .
RUN mvn -B -f ./pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:go-offline
COPY ./machine-learning/RecommendationSystem/ .
RUN mvn -B -f ./pom.xml -s /usr/share/maven/ref/settings-docker.xml package
它实际上做了所有事情,但容器给了我一个出口 1。
万一有人认为这是必要的,这里是 docker-compose.yml 文件:
version: '3'
networks:
laravel:
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8080:80"
volumes:
- .:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- mysql
networks:
- laravel
mysql:
image: mysql:5.7.22
container_name: mysql
restart: unless-stopped
tty: true
ports:
- "3306:3306"
volumes:
- ./docker/mysql:/var/lib/mysql
environment:
MYSQL_DATABASE: 'xxx'
MYSQL_USER: 'xxx'
MYSQL_PASSWORD: 'xxx'
MYSQL_ROOT_PASSWORD: 'xxx'
networks:
- laravel
php:
build:
context: .
dockerfile: ./docker/Dockerfile
container_name: php
volumes:
- .:/var/www/html
ports:
- "9000:9000"
networks:
- laravel
希望有人可以帮助我:(如果您需要更多信息或解释不正确,请告诉我,我会尽力做到最好。
感谢大家。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.