使用docker的新手。
我正在尝试使用docker swarm在GCP上的多个节点上部署我的webapp。我测试了我的docker作文。yml使用docker-compose-d*,它工作得很好。我能够连接并访问mysql数据库。
但后来我尝试使用***sudo docker stack deploy-c docker compose从管理器使用docker swarm进行部署。yaml social_network***,数据库连接出错。
我想问题是在docker compose中使用***image:php:8.1-apache***。yml,但使用图像对于dockerswarm是必要的。有什么解决办法吗?
docker-compose.yml
version: '3.3'
services:
web:
image: php:8.1-apache
build:
context: ./php
dockerfile: Dockerfile
container_name: php81
depends_on:
- db
volumes:
- ./src/social_network:/var/www/html/
ports:
- 8080:80
deploy:
replicas: 3
db:
container_name: mysql8
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- 6033:3306
deploy:
replicas: 3
phpMyAdmin:
image: phpmyadmin
container_name: myphpMyAdmin
environment:
PMA_ARBITRARY: 1
restart: always
ports:
- 8082:80
deploy:
mode: replicated
replicas: 3
Dockerfile文件
FROM php:8.1-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
EXPOSE 80
错误
<br /> <b>Fatal error</b>: Uncaught Error: Call to undefined function mysqli_connect() in /var/www/html/php/config.php:3 Stack trace: #0 /var/www/html/php/login.php(3): include_once() #1 {main} thrown in <b>/var/www/html/php/config.php</b> on line <b>3</b><br />
在配置中。php文件
$conn = mysqli_connect("db","root","root","social_network");
1条答案
按热度按时间kokeuurv1#
Docker swarm不支持
build:
,因此您的堆栈部署将使用您在编写中指示的基础php:8.1-apache
映像。您将需要构建自己版本的映像并将其发布到注册表-docker hub有一个免费层,GCP将有某种GCR,或者您只需将
registry:2
示例部署到您的swarm以自托管自己的映像。更改docker组成。yml映像引用指向此存储库,然后您的构建过程可以是这样的: