Docker实践

Posted by Wh0ami-hy on July 26, 2023

1. Docker实践

1.1. 场景

一个前后端分离的项目,需要redis、mysql5.7、Java8、nginx

生产环境下,数据库redis、mysql不建议使用docker

目录结构 docker-res下

├── docker-compose.yml
├── java-res
│   ├── dockerfile-java
│   └── exam-0.0.1-SNAPSHOT.jar
└── nginx-res
    ├── dist
    │   ├── assets
    │   │   ├── index-DEWksCs1.css
    │   │   └── index-Dzzr74DO.js
    │   ├── index.html
    │   └── vite.svg
    ├── dockerfile-nginx
    └── nginx.conf

1.2. 创建项目文件夹

cd /root
mkdir company-project
cd company-project
# project-nginx 目录下存放dockerfile-nginx、nginx.conf、前端编译后的文件夹dist
mkdir project-nginx
# 存放后端打包的jar、dockerfile-java
mkdir project-java

1.3. 定制nginx容器

dockerfile-nginx

FROM nginx:1.27.5-alpine

LABEL maintainer="yaoxiang"

LABEL description="A yaoxiang Dockerfile for nginx"

ENV TZ=Asia/Shanghai

EXPOSE 6688

WORKDIR /yaoxiang-nginx

COPY nginx.conf /etc/nginx/nginx.conf

# /yaoxiang-nginx/html

COPY dist ./html

CMD ["nginx", "-g", "daemon off;"]

nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

  

    server {

        listen       6688;

        server_name  localhost;

  

    location / {

            root   /yaoxiang-nginx/html;

      try_files $uri $uri/ /index.html;

            index  index.html index.htm;

        }

    }

}

1.4. 定制后端容器

dockerfile-java

FROM amazoncorretto:8

LABEL maintainer="yaoxiang"

LABEL description="A yaoxiang Dockerfile for java"

ENV TZ=Asia/Shanghai

EXPOSE 8080

WORKDIR /yaoxiang-java

# /yaoxiang-java/exam-0.0.1-SNAPSHOT.jar

COPY exam-0.0.1-SNAPSHOT.jar ./

CMD ["java", "-jar", "exam-0.0.1-SNAPSHOT.jar"]

2. DockerCompose实践

docker-compose.yml

name: yaoxiang-app

services:


  # 前端服务 - Nginx

  frontend:

    container_name: yaoxiang-nginx

    image: yaoxiang-nginx

    ports:

      - "6688:6688"

    build:

      context: ./nginx-res

      dockerfile: dockerfile-nginx

    restart: unless-stopped

  

  # 后端服务 - Java 8 Spring Boot

  backend:

    container_name: yaoxiang-java

    image: yaoxiang-java

    build:

      context: ./java-res

      dockerfile: dockerfile-java

    ports:

      - "8080:8080"

    restart: unless-stopped

2.1. 数据库连接

要让 Docker 容器中的后端服务(yaoxiang-java)能够连接到 宿主机上的 Redis 和 MySQL ,需要在容器中通过宿主机的 IP 地址访问这些服务。

同时修改数据库服务的监听地址为0.0.0.0


本站总访问量