Caddy、MariaDB、PHP 在虚拟服务器上作为 Docker 容器运行 (AlmaLinux 9)

问题描述 投票:0回答:1

我想设置Caddy, MariaDB 和 PHP 8.2 以及 FPM 用于在运行 AlmaLinux 9 的虚拟服务器上托管 Shopware 6 生产安装。我对此非常陌生,因此非常感谢任何提示!

我拥有虚拟服务器的 root 访问权限并设置以下目录

lcmp( 适用于 linux、caddy、mariadb、php)

在 /lcmp 中我有以下目录和文件

docker-compose.yaml /caddy_docker /www

这是 docker - compose.yaml


#PHP Service php: build: './php_docker/'volumes: -. / www / :/var/www / html /

#Caddy Service caddy: build: './caddy_docker/'depends_on: -php ports: -"80:80" - "443:443"volumes: -. / www / :/var/www / html /

#MariaDB Service mariadb: image: mariadb: 10.11 environment: MYSQL_ROOT_PASSWORD: <root db pw volumes: -mysqldata: /var/lib / mysql

#phpMyAdmin Service phpmyadmin: image: phpmyadmin / phpmyadmin: latest ports: -8080 : 80 environment: PMA_HOST: mariadb depends_on: -mariadb

#Volumes volumes: mysqldata:

在/caddy_docker中有Dockerfile


#Update package index and upgrade installed packages RUN apk update && apk upgrade

#Copy Caddyfile to configure Caddy server COPY Caddyfile / etc / caddy / Caddyfile```

and Caddyfile

```domain.tld: 80 {
    reverse_proxy php: 9000 {
        import php_common
    }
}

(php_common) {
    root * /var/www / html file_server php_fastcgi php: 9000 log {
        output stdout
    }
}```

In / php_docker I have(the extensions are required by Shopware 6) from

[https: //github.com/mlocati/docker-php-extension-installer][1]

```FROM php: 8.2 - fpm - alpine

#Downloading install - php - extensions script and making it executable ADD https: //github.com/mlocati/docker-php-extension- 
installer / releases / latest / download / install - php - extensions / usr / local / bin / install - php - extensions RUN chmod + x / usr / local / bin / install - php - extensions

#Installing PHP extensions using install - php - extensions script RUN install - php - extensions\mysqli\pdo\pdo_mysql\gd\zip\intl\xml\curl\dom\fileinfo\iconv\json\libxml\mbstring\openssl\pcre\phar\simplexml\zlib

#Cleaning APK cache RUN rm - rf /
var / cache / apk
/*

在/www中有一个简单的index.php,其中

<?php phpinfo(); ?

我有一个域名 < domain.tld that when opened in the browser should show the index.php The domain is connected via DNS a records to the virtual server, there is no issues with that.

通过以下步骤在此虚拟服务器上安装 Docker

    1. dnf upate 
    2. dnf install yum - utils 
    3. dnf config - manager--add - repo https: //download.docker.com/linux/centos/docker-ce.repo
    4. sudo dnf install docker - ce docker - ce - cli containerd.io

然后启动并启用

systemctl start docker
systemctl enable docker

docker 服务已启动并正在运行。运行 docker compose up -d 在这里工作是输出

    docker compose up -d
      
    WARN[0000] Found orphan containers ([lcmp-apache-1]) for this project. If you removed 
    or renamed this service in your compose file, you can run this command
    [+] Running 4/4
    ✔ Container lcmp-mariadb-1     Running
    ✔ Container lcmp-php-1         Running
    ✔ Container lcmp-phpmyadmin-1  Running
    ✔ Container lcmp-caddy-1       Started

这是

的输出
    docker ps
    CONTAINER ID   IMAGE                          COMMAND                 
    CREATED          
    STATUS          PORTS                                   NAMES
    562fb44c3043   phpmyadmin/phpmyadmin:latest   "/docker-entrypoint.…"   26 minutes ago   
    Up 26 minutes   0.0.0.0:8080-80/tcp, :::8080-80/tcp   lcmp-phpmyadmin-1
    8f778648eed9   mariadb:10.11                  "docker-entrypoint.s…"   26 minutes ago   
    Up 26 minutes   3306/tcp                                lcmp-mariadb-1
    59482a5db10a   lcmp-php                       "docker-php-entrypoi…"   26 minutes ago   
    Up 26 minutes   9000/tcp                                lcmp-php-1

我想要的:

  1. 打开浏览器
  2. 输入域名.tld
  3. 查看index.php的输出

目前发生了什么

从终端运行curl localhost 返回

curl: (7) 无法连接到本地主机端口 80:连接被拒绝

输入域名.tld

domain.tld 响应时间过长 ERR_CONNECTION_TIMED_OUT*/

php mysql docker mariadb caddy
1个回答
0
投票

它现在可以工作了,不确定安全性,但是我放入 /www 文件夹中的任何内容现在都可以工作,对于原始问题中的格式错误感到抱歉,这是我发布它的唯一方式。无论如何,这是我更新的 Caddyfile 在 /lcmp/caddy_docker

http://domain.tld {
    root * /var/www/html
    php_fastcgi php:9000
    file_server
}

https://domain.tld {
    root * /var/www/html
    php_fastcgi php:9000
    file_server
}

我在 /lcmp/caddy_docker/ 中创建了两个新目录

  • /caddy_config
  • /caddy_data

这是 /lcmp 中更新的 docker-compose.yaml

version: "3.8"
services:

  # PHP Service
  php:
    build: './php_docker/'
    volumes:
      - ./www/:/var/www/html/

  # Caddy Service
  caddy:
    build: './caddy_docker/'
    depends_on:
      - php
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./www/:/var/www/html/
      - ./caddy_docker/Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config

  # MariaDB Service
  mariadb:
    image: mariadb:10.11
    environment:
      MYSQL_ROOT_PASSWORD: <redacted>
    volumes:
      - mysqldata:/var/lib/mysql

  # phpMyAdmin Service
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    ports:
      - 8080:80
    environment:
      PMA_HOST: mariadb
    depends_on:
      - mariadb

# Volumes
volumes:
  mysqldata:
  caddy_data:
  caddy_config:
© www.soinside.com 2019 - 2024. All rights reserved.