猿问

VSCode Remote - 添加到现有 - 打破容器

我有一个使用 docker-compose 部署运行的 LAMP 应用程序。


docker-compose.yml:


app_web:

    depends_on:

      - app_db

    build: ./web

    ports: 

      - '3000:80'

    volumes:

      - ./web/www:/var/www/html

    environment:

      - MYSQL_DATABASE=appdb

      - MYSQL_USER=appuser

      - MYSQL_PASSWORD=password

文件:


  FROM php:7.4-apache


  WORKDIR /var/www


  RUN apt-get update \

    && apt-get install -y wget \

    && rm -rf /var/lib/apt/lists/*


  RUN apt-get update \

      && apt-get install -y git

  RUN docker-php-ext-install pdo pdo_mysql mysqli


  RUN a2enmod rewrite


  COPY ./www /var/www/html

这非常有效,为localhost:3000我提供了一个可用的网络应用程序。


我想使用 VSCode 远程容器来改进我的调试。第 1 步是将它添加到我的 docker 实例中。


我已经点击Remote Containers: Add Development Container Configuration并选择了“From docker-compose.yaml”然后选择了app_web。然后我可以在容器中重新打开。


这启动了一些在 Docker Desktop 中看起来像以前一样的东西,但是,Apache 没有运行,当我启动它时service apache2 start它无法访问我从 PHP 设置的 ENV 变量,当我最初启动它。


UYOU
浏览 94回答 1
1回答

12345678_0001

啊,所以,稍后想一想,.devcontainer\docker-compose.yml 以: # Overrides default command so things don't shut down after the process ends.    command: /bin/sh -c "while sleep 1000; do :; done"默认命令应该是 apache2-foreground,它在 php 图像中启动 Apache2。所以删除它,并依靠主 dockerfile 末尾的命令来获取 php 图像解决了这个问题。.devcontainer\docker-compose.yml#-------------------------------------------------------------------------------------------------------------# Copyright (c) Microsoft Corporation. All rights reserved.# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.#-------------------------------------------------------------------------------------------------------------version: '3'services:  # Update this to the name of the service you want to work with in your docker-compose.yml file  app_web:    # If you want add a non-root user to your Dockerfile, you can use the "remoteUser"    # property in devcontainer.json to cause VS Code its sub-processes (terminals, tasks,     # debugging) to execute as the user. Uncomment the next line if you want the entire     # container to run as this user instead. Note that, on Linux, you may need to     # ensure the UID and GID of the container user you create matches your local user.     # See https://aka.ms/vscode-remote/containers/non-root for details.    #    # user: vscode    # Uncomment if you want to override the service's Dockerfile to one in the .devcontainer     # folder. Note that the path of the Dockerfile and context is relative to the *primary*     # docker-compose.yml file (the first in the devcontainer.json "dockerComposeFile"    # array). The sample below assumes your primary file is in the root of your project.    #    # build:    #   context: .    #   dockerfile: .devcontainer/Dockerfile    volumes:      # Update this to wherever you want VS Code to mount the folder of your project      - .:/workspace:cached      # Uncomment the next line to use Docker from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker-compose for details.      # - /var/run/docker.sock:/var/run/docker.sock     # Uncomment the next four lines if you will use a ptrace-based debugger like C++, Go, and Rust.    # cap_add:    #   - SYS_PTRACE    # security_opt:    #   - seccomp:unconfined    # LEAVE THE DEFAULT COMMAND ALONE!
随时随地看视频慕课网APP
我要回答