Erstellen Sie die folgende Docker-Datei und starten Sie sie von Docker-Compose.
Die Version ist ebenfalls aufgeführt. Es ist nicht so, dass man es ohne diese Version nicht schaffen könnte.
Es werden nur die diesmal erforderlichen Elemente aufgelistet.
--Repositorische Wurzel - docker - docker-nginx - Dockerfile - nginx.conf - docker-springboot - Dockerfile - docker-springboot-local - Dockerfile - docker-compose.yml - gradlew - gradlew.bat
Nginx
docker/docker-nginx/Dockerfile
FROM nginx:1.15.0
ADD nginx.conf /etc/nginx/conf.d/nginx.conf
Es ist keine Docker-Datei, wird jedoch im Skript in der Docker-Datei verwendet.
docker/docker-nginx/nginx.conf
server {
listen 8080;
charset utf-8;
access_log off;
location / {
proxy_pass http://app:8090;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static {
access_log off;
expires 30d;
alias /app/static;
}
}
Ich weiß nicht, ob das das Beste ist. Es gibt kein HTTPS, und Sie müssen hier hinzufügen, was Ihre Anwendung benötigt.
Die App von App: 8090 ist der später beschriebene Spring Boot-Container von docker-compose.yml.
Spring Boot
docker/docker-springboot/Dockerfile
FROM openjdk:10.0.1-jdk
RUN git clone https://github.com/xxxx/repo_name.git
WORKDIR ./repo_name
RUN ./gradlew --full-stacktrace -q build
CMD ./gradlew bootRun
docker/docker-springboot-local/Dockerfile
FROM openjdk:10.0.1-jdk
Da die erforderlichen Einstellungen in docker-compose.yml angegeben sind, ist das Ergebnis nur FROM.
docker-compose.yml
version: '3'
services:
nginx:
container_name: container_nginx
build: docker/docker-nginx
restart: always
ports:
- 80:8080
hostname: container_nginx_hostname
links:
- app
app:
container_name: container_springboot
restart: always
build: docker/docker-springboot
expose:
- 8090
command: ./gradlew bootRun
hostname: container_springboot_hostname
#Wird beim schnellen lokalen Start verwendet
# app:
# container_name: container_springboot-local
# restart: always
# build: docker/docker-springboot-local
# expose:
# - 8090
# command: ./gradlew bootRun
# hostname: container_springboot-local_hostname
# working_dir: /container_springboot
# volumes:
# - ./:/container_springboot
Wenn Sie es mit Docker-Comose starten, können Sie die API unter localhost / application path ausführen.
Ich habe es grob geschrieben, um den Inhalt von Dockerfile und docker-compose.yml nicht zu vergessen. Daher gibt es keine ausführliche Erklärung, aber ich konnte die HTTP-Anfrage mit Nginx oben akzeptieren und an Spring Boot senden.
Recommended Posts