首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用laradock使用laravel和docker swarm创建集群的问题

使用laradock使用laravel和docker swarm创建集群的问题
EN

Stack Overflow用户
提问于 2020-05-24 22:06:57
回答 1查看 648关注 0票数 0

我最近开始使用docker,我一直在遵循以下步骤使用laradock https://github.com/jarnovanleeuwen/laravel-dock创建集群

首先,我使用docker-machine创建了2个节点,一个是管理器,另一个是工人,然后使用这个命令,我将管理器节点设置为领导者

代码语言:javascript
运行
复制
docker swarm init --advertise-addr 192.168.99.100

我使用以下命令将另一个节点添加为worker

代码语言:javascript
运行
复制
docker swarm join

在我使用docker-machine ssh管理器访问管理器节点并创建服务之后

代码语言:javascript
运行
复制
docker service create --name registry --publish published=5000,target=5000 registry:2

我用exit和cd离开虚拟机放入laravel-dock文件夹,然后我启动容器来创建镜像

代码语言:javascript
运行
复制
./dock up

然后我把它放下来

代码语言:javascript
运行
复制
./dock down

我使用以下命令构建映像

代码语言:javascript
运行
复制
./dock build

然后将其推送到我用

代码语言:javascript
运行
复制
./dock push

The push refers to repository [192.168.99.100:5000/registry]
Get https://192.168.99.100:5000/v2/: http: server gave HTTP response to HTTPS client

为此,我尝试使用以下命令部署堆栈:

代码语言:javascript
运行
复制
./dock deploy

Are you sure you want to deploy [192.168.99.100:5000/registry:web] to [docker@192.168.99.100]? (y/N) y

Uploading deployment configuration...The authenticity of host '192.168.99.100 (192.168.99.100)' can't be established.
ECDSA key fingerprint is SHA256:r1F+7kuet+grlysNruBECAmYpRVVlvORYhAR4ipNFco.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.99.100' (ECDSA) to the list of known hosts.
docker@192.168.99.100's password: 
docker@192.168.99.100's password: 
OK
docker@192.168.99.100's password: 
./dock-swarm: line 4: .env: No such file or directory

它请求"tcuser“机器的密码,并附带错误" .env :没有这样的文件或目录”,因此我手动将.env复制到在管理器节点中创建的这个文件夹中,使用

代码语言:javascript
运行
复制
docker-machine scp -r .env manager:/home/docker/laraveldock

我尝试再次部署,但出现以下错误

代码语言:javascript
运行
复制
sudo ./dock deploy


Are you sure you want to deploy [192.168.99.100:5000/registry:web] to [docker@192.168.99.100]? (y/N) y

Uploading deployment configuration...docker@192.168.99.100's password: 
docker@192.168.99.100's password: 
OK
docker@192.168.99.100's password: 
Top-level object must be a mapping

在这一点上,我坚持这个错误,我在这个步骤中做错了什么吗?这里还有一些配置

.env

代码语言:javascript
运行
复制
APP_ID=laraveldock
DEPLOY_SERVER=docker@192.168.99.100
DOCKER_REPOSITORY=192.168.99.100:5000/registry:web

REGISTRY=localhost:5000
REGISTRY_USER=docker
REGISTRY_PASSWORD=tcuser

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:25q1JJ78zFzeGYOBIyIndCmuSJBOCaezyW2utE7hE3Y=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_DATABASE=laraveldock
DB_USERNAME=root
DB_PASSWORD=secret

REDIS_PASSWORD=rediz

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
DB_DATABASE=laraveldock
DB_USERNAME=root
DB_PASSWORD=secret

REDIS_PASSWORD=rediz

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

docker-compose.yml

代码语言:javascript
运行
复制
version: '3.7'

# Volumes
volumes:
  mysql:
    driver: local
  redis:
    driver: local

services:

  # Apache + PHP
  app:

    environment:
      - CONTAINER_ROLE=app
      - DB_HOST=db
      - DB_PORT=3306
      - REDIS_HOST=redis
      - REDIS_PORT=6379
    env_file: ../.env
    ports:
      - "80:80"

  # Scheduler
  scheduler:
    user: webdev
    environment:
      - CONTAINER_ROLE=scheduler
      - DB_HOST=db
      - DB_PORT=3306
      - REDIS_HOST=redis
      - REDIS_PORT=6379
    env_file: ../.env

  # Queue worker
  queue:
    user: webdev
    environment:
      - CONTAINER_ROLE=queue
      - DB_HOST=db
      - DB_PORT=3306
      - REDIS_HOST=redis
      - REDIS_PORT=6379
    env_file: ../.env

  # MySQL
  db:
    image: mysql:5.7
    command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
      - MYSQL_DATABASE=${DB_DATABASE}
    ports:
      - "3306:3306"
    volumes:
      - mysql:/var/lib/mysql/

  # Redis
  redis:
    image: redis:5.0
    command: ["redis-server", "--appendonly", "yes", "--requirepass", "${REDIS_PASSWORD}"]
EN

回答 1

Stack Overflow用户

发布于 2020-07-07 22:03:22

我在这个bug上花了一个小时。在我的例子中,问题是由于远程服务器上缺少docker-compose而导致的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61987126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档