1

一般来说,我是 Docker 和容器的新手。我玩了一圈,到了一个点,我没有再进一步了。我搜索了其他问题,但我看不到正确的问题(或理解)答案。所以我希望你能帮助我。

我确实有两个容器,运行 php:7.4-apache 和 mariadb。他们工作正常,如果我使用 docker compose 文件,我可以用docker-compose up -d.

这里是 docker compose 文件(记住,这是我的第一个文件,所以我对它了解不多):

version: '3.1'

services:
  mariadb:
    image: mariadb:latest
    environment:
      - MYSQL_DATABASE=mydb
      - MYSQL_USER=myuser
      - MYSQL_PASSWORD=secret
      - MYSQL_ROOT_PASSWORD=docker
    ports:
      - "3306:3306"
    volumes:
      - ./database/storage
      - ./database/src:/usr/src
    restart: always

  php:
    image: php:7.4-apache
    ports:
      - 80:80
    volumes:
      - ./php/src:/var/www/html/
    restart: always

我的“项目结构”如下所示:

项目结构

如果我现在启动 dev 容器,我可以选择使用 docker-compose 文件。我这样做了,我不明白的第一件事是,我必须在这两个服务(php/mariadb)之间进行选择。于是我用php试了一下。它开始运行,我可以看到带有docker ps. 但是,如果我想通过连接到 php 网站localhost:80并查看我的“网站”,我没有得到任何连接。我期待与使用 docker-compose up 相同的行为。但这不会发生。这是 devcontainer.json,它可能会有所帮助:

// If you want to run as a non-root user in the container, see .devcontainer/docker-compose.yml.
{
    "name": "Existing Docker Compose (Extend)",

    // Update the 'dockerComposeFile' list if you have more compose files or use different names.
    // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make.
    "dockerComposeFile": [
        "..\\Docker-compose.yml",
        "docker-compose.yml"
    ],

    // The 'service' property is the name of the service for the container that VS Code should
    // use. Update this value and .devcontainer/docker-compose.yml to the real service name.
    "service": "php",

    // The optional 'workspaceFolder' property is the path VS Code should open by default when
    // connected. This is typically a file mount in .devcontainer/docker-compose.yml
    "workspaceFolder": "/workspace",

    // Set *default* container specific settings.json values on container create.
    "settings": {
        "terminal.integrated.shell.linux": null
    },

    // Add the IDs of extensions you want installed when the container is created.
    "extensions": [],

    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    "forwardPorts": [80],

    // Uncomment the next line if you want start specific services in your Docker Compose config.
    // "runServices": [],

    // Uncomment the next line if you want to keep your containers running after VS Code shuts down.
    // "shutdownAction": "none",

    // Uncomment the next line to run commands after the container is created - for example installing curl.
    // "postCreateCommand": "apt-get update && apt-get install -y curl",

    // Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root.
    // "remoteUser": "vscode"
}

如您所见,我尝试转发端口 80,但这也不起作用。同样令人困惑的是, .devcontainer 文件夹中的docker -compose.yml与我原来的 Docker-compose.yml 不同

我不知道下一步该做什么。我希望,我可以使用 Visual Studio 代码在这个容器中制作简单的 php 脚本,然后连接到 mariadb。mariadb 和 php 都应该在单独的容器中运行。好吧,至少那是我的希望。

- -附加信息 - -

为了展示 VisualStudio Code 向我展示的内容,这里有一些屏幕截图:

在此处输入图像描述

我选择在容器中打开文件夹。

在此处输入图像描述

然后我选择Docker-compose.yml(如果我使用它可以正常工作docker-compose up)。

在此处输入图像描述

如您所见,它现在询问我要选择哪种服务。如果这很有趣,因为我希望这两个服务都运行......但在这种情况下,如果我可以通过 VS-Code 更改 php 脚本就可以了。

谢谢您的帮助

-GreNait

4

0 回答 0