1、docker-compose版本需要大于等于1.29

vim /etc/docker/daemon.json
{
  "dns": ["223.5.5.5", "223.6.6.6"],
  "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}

systemctl daemon-reload
systemctl restart docker
# 卸载旧版
sudo rm /usr/local/bin/docker-compose

# 下载新版(v1 最后版本是 1.29.2,但建议直接用 V2)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋权
sudo chmod +x /usr/local/bin/docker-compose

# 验证
docker-compose --version  #必须≥1.29版本

2、创建项目目录

mkdir -p /opt/docker-compose_nginx_springboot_mysql/{nginx,springboot,mysql}

3、mysql部分

vim Dockerfile
FROM centos:7
RUN rm -rf /etc/yum.repos/*
ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache
RUN yum install -y wget perl net-tools
RUN wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
RUN rpm -ivh mysql80-community-release-el7-3.noarch.rpm
RUN yum install -y --nogpgcheck mysql-community-server
RUN mysqld --initialize-insecure --user=mysql
EXPOSE 3306
COPY yl_app.sql /opt
CMD [ "mysqld","--user=mysql" ]


[root@docker mysql]# ls
CentOS-Base.repo  Dockerfile  yl_app.sql
     
进入数据库里:          
  mysqladmin -uroot -p password "123456"
  mysql -uroot -p123456
  source /opt/yl_app.sql
  show databases;
  create database yjs1023;
  use yjs1023
  create table ryf;
  create user 'app_user'@'%' identified by '123456';
  GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%' WITH GRANT OPTION;
  flush privileges;
  use mysql
  select * from user\G;

4、nginx部分

vim Dockerfile
FROM centos:7
MAINTAINER this is nginx <ryf>
RUN rm -rf /etc/yum.repos.d/*
ADD CentOS-Base.repo /etc/yum.repos.d
RUN yum clean all && \
    yum makecache && \
    yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.20.2.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.20.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:PATH
EXPOSE 80
EXPOSE 443
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

[root@docker nginx]# ls   # dist/ 这个包是老师给的  里边包含静态页面等内容
CentOS-Base.repo  Dockerfile           
dist              nginx-1.20.2.tar.gz

5、springboot部分

vim Dockerfile
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache
RUN yum install -y java-1.8.0-openjdk java-1.8.0.openjdk-devel
RUN mkdir -p /opt/webapp
WORKDIR /opt/webapp
COPY yl_application-1.0-SNAPSHOT.jar /opt/webapp/
COPY ./appStart.sh /opt/webapp
RUN chmod 777 appStart.sh
CMD ["/bin/bash","appStart.sh"]

vim appStart.sh
nohup java -jar yl_application-1.0-SNAPSHOT.jar

[root@docker springboot]# ls
appStart.sh       Dockerfile
CentOS-Base.repo  yl_application-1.0-SNAPSHOT.jar

有现成的jar包  把包中的BOOT-TNE/classess/application-prod.yml文件中的IP 、用户、密码要改成和yml文件中的一摸一样

6、docker-compose.yml文件

version: '3'
services: 
  nginx:
    container_name: nginx-manager
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 234:80
      - 443:443
    networks:
      network-abc:
        ipv4_address: 172.20.0.10
    volumes:
      - ./nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf
      - ./nginx/dist:/usr/local/nginx/html
  mysql:
    container_name: mysql-manager
    hostname: mysql
    build:
      context: ./mysql
      dockerfile: Dockerfile
    ports:
      - 3306:3306
    networks:
      network-abc:
        ipv4_address: 172.20.0.30
  springboot:  
    container_name: springboot-manger
    hostname: springboot
    build:
      context: ./springboot
      dockerfile: Dockerfile
    ports:
      - 8090:8090
    networks:
      network-abc:
        ipv4_address: 172.20.0.20
networks:
  network-abc:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

7、启动

docker-compose up -d

8、登录

http://192.168.10.160:234

更多推荐