苍穹外卖后端部署/阿里云ECS/Docker

声明:此贴针对于小白玩家

一、事前准备

1.阿里云ECS:我用的是下图这个,也可以白嫖试用(3个月,和我购买的性能一致)的,但是试用的不满足备案条件,如果之后想使用域名访问的话,建议还是花点钱
苍穹外卖后端部署/阿里云ECS/Docker_第1张图片2.远程工具:自己配置好,连接到服务器。也可以使用ecs自带的,都行
3.以上两步做好后,安装Docker,有很多帖子,自行百度吧

二、环境配置

  • 目录结构如下:

Sto_DockerCompose
├─ docker-compose.yml
├─ jar
│ ├─ Dockerfile
│ └─ sky-server-1.0-SNAPSHOT.jar
├─ mysql
│ ├─ conf
│ ├─ data
│ └─ init
├─ nginx
│ ├─ conf
│ └─ html
└─ redis
├─ data
└─ redis.conf

1.docker-compose.yml

后续步骤都和此yml文件对应

mysql密码自行指定,redis密码在第5步的.conf里指定
version: "1.0"

services:
  mysql:
    image: mysql
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: ******
    volumes:
      - "./mysql/conf:/etc/mysql/conf.d"
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/init:/docker-entrypoint-initdb.d"
    networks:
      - sto-net
  sky_take_out:
    build: 
      context: ./jar
      dockerfile: Dockerfile
    container_name: sky_take_out
    ports:
      - "8080:8080"
    networks:
      - sto-net
    depends_on:
      - mysql
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - "./nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
      - "./nginx/html:/usr/share/nginx/html:ro"
    depends_on:
      - sky_take_out
    networks:
      - sto-net
  redis:
    image: redis
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - "./redis/redis.conf:/etc/redis/redis.conf"
      - "./redis/data:/data"
    depends_on:
      - sky_take_out
    networks:
      - sto-net
    command: ["redis-server", "/etc/redis/redis.conf"]
networks:
  sto-net:
    name: sky_take_out_net

2.jar

DockerFile
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY sky-server-1.0-SNAPSHOT.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
sky-server-1.0-SNAPSHOT.jar
  • Maven打包前,需要修改数据库配置,将host分别改为mysql和redis(同一网段的Docker容器可以使用容器名称相互通信)
  • mysql用户名root,password是在compose文件中自己指定过的,端口就是3306
sky:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    host: mysql
    port: 3306
    database: sky_take_out
    username: root
    password: *********
  redis:
    host: redis
    port: 6379
    password: ******
    database: 10  

3.mysql

conf

新建sto.cnf文件,键入以下内容,就是数据库一些配置

[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
data

init

sql脚本,初始化数据库

4.nginx

conf

先修改upstream webservers

	upstream webservers{
	  server Your IP Address:8080 weight=90 ;
	}

再修改静态资源位置

    location / {
       # root   html/sky;
		root  /usr/share/nginx/html/sky;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 html

前端工程,复制过来就行
苍穹外卖后端部署/阿里云ECS/Docker_第2张图片

5.redis

data

redis.conf
requirepass ******

三、容器搭建/启动

以上步骤完成后,将Sto_DockerCompose文件夹上传到服务器中,我是上传到了/root/Sto_DockerCompose,然后执行以下命令,构建容器

cd /root/Sto_DockerCompose
docker compose up -d 
#up: 启动服务。
#-d: 在后台运行服务(以守护进程方式)。

到这里就大功告成了,大家可以使用自己的IP访问了,默认端口80。

你可能感兴趣的:(java,docker,阿里云)