programing

도커 구성 작업이지만 비주얼 스튜디오 코드 개발 컨테이너를 사용하면 작업이 수행되지 않습니다.

magicmemo 2023. 7. 15. 10:00
반응형

도커 구성 작업이지만 비주얼 스튜디오 코드 개발 컨테이너를 사용하면 작업이 수행되지 않습니다.

도커와 컨테이너는 일반적으로 처음입니다.저는 장난을 치고 더 이상 진전이 없는 지점에 도달했습니다.저는 다른 질문들을 검색했지만 정답을 볼 수 없었습니다.그래서 저는 당신이 저를 도울 수 있기를 바랍니다.

저는 php:7.4-apache와 mariadb를 실행하는 두 개의 컨테이너를 가지고 있습니다.잘 작동하고 있으며 도커 작성 파일을 사용하면 모든 작업을 잘 시작할 수 있습니다.docker-compose up -d.

여기 도커 작성 파일이 있습니다(이것은 나의 첫 번째 파일이므로 나는 그것에 대한 지식이 많지 않습니다).

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

제 "프로젝트 구조"는 다음과 같습니다.

Project structure

지금 개발 컨테이너를 시작하면 도커 합성 파일을 사용하도록 선택할 수 있습니다.저는 이것을 했습니다. 그리고 제가 가장 먼저 이해하지 못한 것은 그 두 가지 서비스(php/mariadb) 중에서 선택해야 한다는 것입니다.그래서 저는 php를 사용해 보았습니다.작동하기 시작하고, 컨테이너가 보입니다.docker ps하지만, 만약 내가 php-website에 접속하기를 원한다면,localhost:80"웹 사이트"를 확인해 보십시오. 연결이 되지 않습니다.저는 도커를 사용하는 것과 같은 행동을 기대했습니다.하지만 이런 일은 일어나지 않습니다.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을 포워딩해 보았지만 이것도 작동하지 않았습니다..dev 컨테이너 폴더 내의 docker-compose.yml이 원래의 docker-compose.yml과 동일하지 않다는 점도 혼란스럽습니다.

다음에 무엇을 해야 할지 모르겠습니다.저는 이 컨테이너 안에서 간단한 php 스크립트를 만들기 위해 비주얼 스튜디오 코드를 사용할 수 있고 나중에 mariadb에 연결할 수 있기를 바랍니다.mariadb와 php는 모두 별도의 컨테이너에서 실행되어야 합니다.음, 적어도 그게 제 희망이었어요.

---추가 정보---

Visual Studio Code에 표시되는 내용을 보려면 다음과 같이 몇 가지 스크린샷을 참조하십시오.

enter image description here

컨테이너에 있는 폴더를 엽니다.

enter image description here

그런 다음 Docker-compose.yml을 선택합니다(사용하면 정상적으로 작동합니다).docker-compose up).

enter image description here

보시는 것처럼 어떤 서비스를 선택할지 묻는 메시지가 나타납니다.재미있군요, 두 서비스를 모두 실행하고 싶기 때문에...하지만 이 시나리오에서는 VS-Code를 통해 php 스크립트를 변경할 수 있으면 좋겠습니다.

도와 주셔서 감사해요.

-GreNait

언급URL : https://stackoverflow.com/questions/65061117/docker-compose-up-works-but-using-visual-studio-code-dev-container-doesnt

반응형