刚开始使用码头。
我正在尝试使用坞群将我的webapp部署在GCP上的多个节点上。我使用 -d测试了我的docker-compose.yml,它运行得很好。我能够连接和访问mysql数据库。
但是后来我尝试使用sudo docker堆栈部署-c docker-compose.yaml social_network从管理器部署对接者群,我得到了数据库连接上的一个错误。
我认为问题在于如何使用映像: php:8.1-apache中的dockerCompose.yml,但是使用映像对于坞群是必要的。有什么解决办法吗?
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: 3Dockerfile
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 />在config.php文件中
$conn = mysqli_connect("db","root","root","social_network");发布于 2022-10-21 06:14:34
码头群不支持build:,所以您的堆栈部署将使用您在撰写时指示的基本php:8.1-apache映像。
您需要构建自己版本的映像并将其发布到注册表--停靠中心有一个免费的层,GCP将有某种GCR,或者您可以将registry:2实例部署到自己的集群中,以自我托管自己的映像。
将docker-compose.yml映像引用更改为目标存储库,然后您的构建过程可以如下所示:
docker compose build
docker compose push
docker stack deploy ...https://stackoverflow.com/questions/74134840
复制相似问题