Code God Road Blog Deployment Tutorial [versão completa] | Tutorial de implantação do Docker baseado em Linux | Muito detalhado

ilustrar

  • Prefácio: Recentemente, fiz um projeto de treinamento SpringBoot com a estrada do Biz Station Code God. Encontrei muitas dificuldades e problemas na primeira operação, principalmente na parte de implantação, fiz muitos desvios. Aqui anoto minha própria implantação processo para todos. Para referência, você também pode enviar seus valiosos comentários.
  • Link do vídeo de deus do código da estação de bipe: https://www.bilibili.com/video/BV1Gb4y1d7zb?p=36
  • Meu site: www.zhangshidi.space (pode ser atualizado para outro conteúdo depois de um tempo~)
  • Não é fácil de criar, espero que todos passem e dêem um joinha.
  • Algumas instruções podem estar erradas, você pode fazer manualmente (por exemplo, no tutorial que li, mkdir é usado para criar arquivos como blog.conf, mas há um problema com o formato do arquivo, e sempre terá um sufixo como blog.conf.swp O que, então eu crio manualmente um novo arquivo no diretório de arquivos à esquerda e depois descobri que o novo arquivo pode ser criado com sucesso por toque; mkdir é melhor criar uma pasta)

Pré-conhecimento

  • Os pontos de conhecimento a seguir esperam que você primeiro pesquise e leia, e tenha um entendimento geral.
    • O que é Linux e algumas instruções básicas para dominar o Linux.
    • O que é o docker, o princípio da implantação do docker
    • o que é nginx
  • O que nós vamos fazer
    • Empacote o projeto front-end Vue para o servidor em nuvem
    • Empacote o projeto de back-end springboot (página da web principal, doravante referida como aplicativo) (sistema de gerenciamento de back-end, doravante denominado admin) para o servidor em nuvem
    • Use o docker para implantar mysql, redis, ngix, app, admin. Em seguida, use o docker-compose para executar um arranjo de serviço, para que os projetos sejam iniciados em sequência.

Diretório de arquivos

  • Se você seguir completamente minhas ideias, poderá verificar meu diretório de arquivos para verificar se o arquivo não está correto.insira a descrição da imagem aqui

1 Preparação do ambiente: compra do servidor (e nome de domínio)

  • Ambiente básico (servidor em nuvem e nome de domínio) – faça isso com antecedência !
  • Minha configuração de nuvem: servidor Alibaba Cloud 1 core 2 GiB + nome de domínio Tencent Cloud.
  • O servidor em nuvem é equivalente ao nosso segundo computador, mas está na nuvem. Por causa do relacionamento dele na nuvem, podemos assediá-lo à vontade. Se houver um problema mais problemático, podemos reinstalar o sistema diretamente sem causar nenhum dano ao nosso próprio computador.
    • Primeiro de tudo, precisamos de um servidor em nuvem, depois precisamos comprar um servidor em nuvem, se precisarmos de um nome de domínio, precisamos comprar um nome de domínio e concluir a ligação (resolução) entre o nome de domínio e o IP do servidor em nuvem Morada. Também é possível usar temporariamente um endereço IP sem um nome de domínio.
    • Razões para fazer isso com antecedência: Como o nome de domínio precisa ser arquivado , diz-se que o tempo de arquivamento pode ser de até uma semana. Meu (nome de domínio comum comprado na Tencent Cloud - 10 anos 180) está bem, e o o arquivamento é concluído em um dia. O servidor em nuvem foi adquirido no evento Alibaba Cloud no Double Eleven em 2021 no ano passado. Quanto a qual é bom e qual é ruim, acho que deveria ser mais ou menos a mesma coisa, peguei os baratos e comprei.
    • Após a compra do servidor, você precisa instalar o sistema linux no servidor, eu escolhi a versão centoS 7.8.
    • Então, para o uso deste servidor em nuvem, podemos inserir instruções diretamente no servidor em nuvem | ou usar ferramentas de terceiros, como o Xshell. (eu uso xshell, que tem menos bugs e é mais fluente)
    • Por favor, procure as etapas acima por si mesmo.
    • Após concluir esses passos, uma coisa muito importante é abrir as portas . No caso do Alibaba Cloud, é na configuração das regras do grupo de segurança, como porta 8888, porta redis, porta do banco de dados, etc. não ser acessível.
      insira a descrição da imagem aqui

2 Instalação do Docker

  • No meu entendimento de docker, docker pode ser entendido como um container, que equivale a um sistema linux mais em miniatura, no qual podemos implantar vários ambientes e configurações.
    • Para um conhecimento mais específico do docker, podemos consultar este artigo: https://blog.csdn.net/weixin_46628200/article/details/106668209

iniciar a instalação

  • Primeiro, entre no nosso painel de gerenciamento do servidor em nuvem - conexão remota, você pode ver uma página tão vazia e, em seguida, inserimos vários comandos aqui. Interface de operação do servidor em nuvem- Percebemos que existem dois símbolos no canto superior esquerdo, um é [Nova Janela de Comando]; o outro é [Visual View File], que é quase o mesmo que normalmente vemos os arquivos. Às vezes, você pode mover diretamente no arquivo se estiver com preguiça de usar o comando de cópia.As operações comuns são rápidas

instalação do docker

  • Digite a seguinte série de comandos passo a passo em sua janela de comando
# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y 
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
#启动docker
/bin/systemctl start docker.service

Instalação e inicialização do Docker
Puxe a imagem do docker

  • A imagem do docker pode ser entendida como uma imagem comum e a imagem do docker é usada para criar nosso contêiner do docker.
  • Ainda digite o seguinte comando na janela de comando
docker pull nginx
docker pull redis:5.0.3
docker pull java:8
docker pull mysql:5.7

3 janela de encaixe configurar mysql

  • Em seguida, vou me referir coletivamente aos servidores em nuvem como hosts.

Ideia: Construir um docker para configurar o MySQL; e organizar os arquivos de dados do MySQL no host, o que é um pouco mais problemático, mas a segurança é aprimorada

Antes de configurar o mysql, espero que você instale o MySQL em seu próprio host primeiro e siga o tutorial de instalação do mysql no nível de babá no linux .
A razão para isso é porque eu quero armazenar os dados mysql na máquina host, e apenas um ambiente mysql está configurado no docker. , todos os arquivos de dados desaparecerão. , muito inseguro.

  • Crie um diretório MySQL no host (crie um comando de pasta mkdir, cd é um comando de diretório switch)
mkdir -p /mnt/docker/mysql
cd /mnt/docker/mysql
  • Vá em frente e execute os seguintes comandos na janela de comando
    • Que runtem a função de [criar e executar] o container mysql
    • -p é estabelecer o mapeamento entre a porta do host 3307 e a porta do contêiner 3306
    • -v é para gerar um diretório de montagem. A montagem pode ser entendida como compartilhar/sincronizar um diretório de arquivo. O diretório antes dos dois pontos é o diretório do host e depois dos dois pontos é o diretório de dados do MySQL na janela de encaixe. Mesmo se a janela de encaixe for excluída , os dados ainda podem ser retidos no host. no diretório do host
      • Vale ressaltar que existem três diretórios montados nas notas do Code God , a saber: arquivos de configuração, logs e arquivos de dados. Continuo recebendo erros no log na operação real, então apenas configuro apenas os arquivos de dados mais importantes
    • O próximo passo é especificar a senha padrão do host MySQL. Se a senha padrão não for definida, um erro pode ser relatado.
docker run -id \
-p 3307:3306 \
--name=mysql \
-v /mnt/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7

Mapeando arquivos com montagens

Em seguida, precisamos inserir o contêiner e abrir as permissões

  • docker psVerifique se o contêiner já está em execução
    • Você deve ver que o container mysql5.7 já está rodando
  • no recipientedocker exec -it mysql bash
  • MYSQL no contêinermysql -uroot -p
    • Digite a senha, como acima, eu configuro como root, basta digitar diretamente. (Em branco é exibido na interface, mas a senha já foi inserida, pressione Enter para confirmar.)
  • As próximas etapas são semelhantes à etapa 10 de instalação do host mysql acima
    • show databases;
    • use mysql ;
    • show tables;
    • select user,host from user;(Pode relatar um erro sql, basta adicionar o campo `` package)
      • Pode-se ver que o host correspondente ao usuário root não é %, temos que alterá-lo para % para abrir as permissões.
    • update user set host ='%'where user ='root';
    • update user set host ='%'where user ='root' and host='localhost';
    • É melhor executar as duas sentenças. Na minha situação na época, havia dois usuários root. O resultado da execução foi que um root correspondente ao host estava vazio e o outro host estava %.
    • (Você pode até abrir permissões avançadas grant all privileges on *.* to root@'%' identified by 'root' with grant option;)
    • Atualizar permissõesflush privileges;
  • exitSaia do MySQL e, em seguida, exitsaia do contêiner do MySQL

Verifique se o contêiner do Docker do mysql está configurado com sucesso e visualize seu endereço IP do docker exposto

  • Use isto docker logs -f mysqlpara ver se a configuração foi bem sucedidainsira a descrição da imagem aqui
  • docker inspect mysql→ Verifique o endereço IP 172.17.0.2 do container do docker mysql correspondente, lembre-se deste endereço, que é necessário para a aplicação de background de empacotamento abaixo.
    O endereço IP do contêiner MySQL Docker

Depois que o ambiente estiver correto, precisamos importar nosso arquivo de banco de dados blog.sql

  • Como mencionado acima, implementamos o mapeamento entre o /mnt/docker/mysql/datadiretório do host e o /var/lib/mysqlendereço do container docker, portanto, se importarmos o arquivo blog.sql para este diretório do host, o blog.sql também aparecerá no diretório correspondente do docker . Abaixo, as operações específicas são as seguintes:
cd /mnt/docker/mysql/data
rz
  • Entre eles, cd significa mudar de diretório e rz significa fazer upload de arquivos. Neste ponto, podemos importar blog.sql para ele. Em seguida, verificamos se o arquivo aparece no contêiner docker
  • no recipientedocker exec -it mysql bash
  • Mude para o diretório de montagemcd /var/lib/mysql
  • Olhando para todos os arquivos lsneste diretório, você pode, teoricamente, ver que blog.sql também está neste diretório.
  • Em seguida, execute o sql no docker.
    • mysql -uroot -p, digite a senha para entrar no banco de dados no docker
    • criar banco de dadoscreate database blog;
    • sair de volta para o recipienteexit
    • Importar arquivo para banco de dadosmysql -uroot -p blog < blog.sql;
    • trocar banco de dadosuse blog;
    • execute sql e salve o banco de dadossource blog.sql;
  • verificação de resultado
    • use blog; show tables; select * from ms_admin;
    • Se conseguirmos encontrar o resultado (como mostrado na figura abaixo), significa que nossa implantação foi bem-sucedida.
      Dados do banco de dados importados com sucesso
  • Na implantação real, passo a maior parte do tempo no banco de dados, como falha no link, acesso negado, falha na conexão jdbc etc., provavelmente devido às permissões do banco de dados. Verifique se as permissões de host correspondentes ao root são % destas.
  • Há também um arquivo de configuração do banco de dados escrito nas notas do Code God, eu não escrevi aqui, apenas use a configuração padrão por enquanto.

4 docker configurar redis

  • Isso é muito simples, um comando para fazer isso
  • docker run -id --name=redis -p 6379:6379 redis:5.0.3
  • um exame
    • docker ps Veja o container atualmente em execução, em teoria, agora você pode ver que tanto o mysql quanto o redis estão em execução.
    • docker ps -a Ver todos os contêineres (incluindo não em execução)
  • Precisamos verificar o endereço ip correspondente ao redis docker, que docker inspect redisserá usado posteriormente ao empacotar o projeto.Aqui estou 172.17.0.3
    O endereço IP correspondente ao docker redis

5 Dockerfile cria imagem de back-end

  • Podemos puxar diretamente os espelhos como MySQL e redis, mas os espelhos dos projetos de back-end precisam ser empacotados e construídos por nós mesmos.
  • A explicação de Code God do Dockerfile é a seguinte
    • Dockerfile é um arquivo de texto
    • contém um comando
    • Cada instrução constrói uma camada, baseada na imagem base, e finalmente constrói uma nova imagem
    • Para desenvolvedores: pode fornecer um ambiente de desenvolvimento completamente consistente para a equipe de desenvolvimento
    • Para testadores: você pode pegar diretamente a imagem criada durante o desenvolvimento ou
      criar uma nova imagem através do arquivo Dockerfile para começar a trabalhar
    • Para o pessoal de operação e manutenção: a migração perfeita de aplicativos pode ser alcançada durante a implantação

Primeiro, precisamos configurar os parâmetros na ideia e no pacote

  • Configurar parâmetros de conexão -configuração da ideia
  • Há também um parâmetro sobre a configuração entre domínios. Você também pode consultar o seguinte. Você precisa permitir que seu próprio domínio passe e, em seguida, a configuração entre domínios é alterada da escrita pelo professor para a segunda. O motivo é como mostrado na figura, por favor Atenção a todos! insira a descrição da imagem aqui- Empacote e gere pacote jarConfiguração de embalagem
  • Encontre o arquivo local, coloque-o em um bom lugar para encontrá-lo e prepare-se para importá-lo para nosso diretório mais tarde
    Processamento de arquivos compactados

Em seguida, precisamos importar o pacote jar no diretório /mnt/docker/app, construir o arquivo de configuração da imagem e executar a imagem.

  • Crie um novo diretório primeiromkdir /mnt/docker/app
  • Configurações que podem usar a função de uploadyum -y install lrzsz
  • mudar para este diretóriocd /mnt/docker/app
  • fazer upload de arquivosrz
  • Mude o nomemv blog-api-1.0-SNAPSHOT.jar blog_api.jar
  • Configure o arquivo de configuração para construir a imagem
    • crie um novo arquivotouch blog_dockerfile
    • Modificar o conteúdo do arquivovim blog_dockerfile
    • Cole o seguinte conteúdo nele (modifique você mesmo os parâmetros pessoais)
FROM java:8
MAINTAINER zhangshidi <[email protected]>
ADD ./blog_api.jar /app.jar
CMD java -jar /app.jar --spring.profiles.active=prod
  • executar imagemdocker build -f ./blog_dockerfile -t app .
  • Verifique, docker imagesvocê deve ver que o docker do aplicativo já está em execução

6 Construir a imagem de front-end

Modifique a configuração de front-end, empacotar, carregar e ajustar os locais dos arquivos.

  • Vamos para a frente

    • modificar ipinsira a descrição da imagem aqui
  • Construa o projeto, ele irá gerar automaticamente o projeto para dist, compactar manualmente o arquivo e enviar para nosso servidor em nuvem.insira a descrição da imagem aqui

  • De volta à interface da janela de comando, devemos instalar a função unzip

#获取安装列表  yum安装列表中搜索zip/unzip是否存在

yum list | grep zip/unzip

#执行安装支持zip命令 根据提示输入y允许安装

yum install zip

#执行安装支持unzip命令 根据提示输入y允许安装

yum install unzip
  • Crie a pasta correspondente
    • mkdir /mnt/zhang
    • mkdir /mnt/zhang/blog
  • Mude para o diretório do blog cd /mnt/zhang/blog
    - upload rz, faça upload do nosso pacote compactado dist front-end
  • descomprimirunzip dist.zip
  • Em seguida, mova o local do arquivo, em /mnt/zhang/blog ls, deve ser os três arquivos a seguir: dist.zip, index.html, static, na verdade, os úteis devem ser index.html e static
    • Quanto a como mover, arrastei-o diretamente para o diretório de arquivos à esquerda. Você também pode encontrar o comando correspondente.
      insira a descrição da imagem aqui

7 Orquestração de serviço do Docker-compose

  • A orquestração de serviço usa principalmente o Docker Compose para iniciar o springboot e o nginx em lotes
    • Springboot é nosso próprio projeto empacotado
    • A função do nginx: ① Os arquivos estáticos (como HTML, imagens) no servidor são exibidos ao cliente através do protocolo HTTP. ②Servidor proxy reverso, onde o proxy nginx é o cliente de recursos front-end pode acessar diretamente um servidor de aplicativos do site por meio do protocolo HTTP, o administrador do site pode adicionar um Nginx no meio, o cliente solicita o Nginx, o Nginx solicita o servidor de aplicativos e, em seguida, o O resultado é devolvido ao cliente. Adicionar uma camada de proxy pode alcançar balanceamento de carga, hospedagem virtual e outros efeitos. ( ver detalhes )

Primeiro, instalamos o Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

Crie o diretório correspondente e grave o arquivo de configuração docker-compose.yml

  • vimsignifica modificar o arquivo
mkdir /mnt/docker/docker-compose
cd /mnt/docker/docker-compose
touch docker-compose.yml
vim docker-compose.yml
  • Copie o seguinte conteúdo para docker-compose.yml. Depois de escrever, pressione Esc para sair do modo de edição e, em seguida, digite :wq, você pode salvar e sair~
version: '3'
services:
  nginx:
   image: nginx
   container_name: nginx
   ports:
    - 80:80
    - 443:443
   links:
     - app
   depends_on:
    - app
   volumes:
    - /mnt/docker/docker-compose/nginx/:/etc/nginx/
    - /mnt/zhang/web:/zhang/web
    - /mnt/zhang/blog:/zhang/blog
   network_mode: "bridge"
  app:
    image: app
    container_name: app
    expose:
      - "8888"
    network_mode: "bridge"
  • Este arquivo tem depends_ona função de organizar diretórios. Em relação a este diretório de montagem, preste atenção à sua própria ordem de diretórios. Ao seguir vários tutoriais, você deve distinguir a ordem dos diretórios deles da sua própria ordem de diretórios. A seguir está minha ordem de diretórios
    insira a descrição da imagem aqui

Em seguida, precisamos configurar o diretório de arquivos nginx e os arquivos de configuração internos relacionados

  • Primeiro, precisamos obter o nginx.confarquivo
mkdir -p ./nginx
cd /mnt/docker/nginx
touch nginx.conf
vim nginx.conf
  • Copie o seguinte conteúdo
user nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}
  • Crie uma nova pasta conf.d e, em seguida, crie um novo blog.confarquivo
mkdir conf.d
cd conf.d
touch blog.conf
vim blog.conf

blog.confModifique a configuração e coloque os seguintes arquivos em

gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_vary off;
upstream appstream{
     
        server app:8888;
}
server{
    # 监听端口
    listen  80;
    # 主机名称/地址
    server_name www.zhangshidi.space zhangshidi.space;
    index   index.html;
    # 前端服务
     location / {
        root /zhang/blog/;
        # 刷新页面后跳转到当前页面
        try_files $uri $uri/ /index.html;
        index index.html;
     }

     # 后端api
     location /api {
                proxy_pass http://appstream;
    }

    location ~* \.(jpg|jpeg|gif|png|swf|rar|zip|css|js|map|svg|woff|ttf|txt)$ {
        root /zhang/blog/;
        index index.html;
        add_header Access-Control-Allow-Origin *;
    }
}
  • Há também uma configuração ssl/tsl na configuração do código god . Se você precisar, pode solicitar e configurar. Vou omitir aqui.

  • Você pode ver que também existe um arquivo chamadomime.types
  • Essa coisa é um must-have no nginx. Eu baixei um nginx da Internet e peguei o mime.typesarquivo e rzentrei nele. Você também pode criar um novo arquivo e copiar o código nele. O código é o seguinte.

types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    font/woff                                        woff;
    font/woff2                                       woff2;

    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}
  • verificar, usar lsinstrução
    insira a descrição da imagem aqui

8 Faça o teste

  • Neste ponto, nossa implantação está basicamente concluída

  • Verifique também docker ps, 4 contêineres estão em execuçãoinsira a descrição da imagem aqui

  • Alterne para o diretório docker-compose e inicie o contêiner. Veja a seguir algumas instruções comuns para iniciar e interromper contêineres.

docker-compose up #直接启动

docker-compose up -d #代表后台启动

docker-compose down  #停止并删除容器

docker-compose start #启动已有容器

docker-compose stop  #停止运行的容器
  • De um modo geral, docker-compose upcomeçamos diretamente a ver se há algum problema com o site. Se houver algum problema, use os dois comandos a seguir para melhorá-lo.
    • Confira o log do ngix:docker logs nginx
    • Ver registros de back-end:docker-compose logs
  • Quando sentirmos que a implantação está completamente concluída, podemos iniciar o docker-compose up -d em segundo plano, para que o servidor possa ser desligado e executado.

  • Por fim, gostaria de agradecer às duas ideias de artigos que mencionei. Ambos estão bem escritos, mas alguns detalhes são difíceis de implementar aqui. Também quero agradecer ao Sr. Code God por seus esforços. Você também pode consultar e compará-los, eu acredito que eles vão te ajudar.
  • Há outra pergunta, você pode perguntar por que não há implantação de gerenciamento em segundo plano?
    • Vamos dar uma olhada mais de perto no gerenciamento de segundo plano. Só pode ser dito que é um caso de Spring Security, e ele não desempenha o papel de gerenciamento de segundo plano... Embora seja implantado, não faz sentido.

Obrigado por sua visita. Se você acha que a escrita é boa, por favor, dê um like e um incentivo. Se você tiver alguma dúvida, por favor deixe uma mensagem. Bem-vindo para apontar o problema.

  • Também defina uma bandeira para você, depois aprenda Spring Cloud, e depois vá conquistar o projeto do shopping com mais estrelas no github

Acho que você gosta

Origin blog.csdn.net/dolpin_ink/article/details/123056852
Recomendado
Clasificación