LoginSignup
1
1

More than 3 years have passed since last update.

VSCodeでdocker-composeを開くと動いていたものが動かない(Mysql)

Last updated at Posted at 2021-04-29

問題

Docker-compose up だとコンテナは起動して、正常にMysqlが動作する。

VSCodeの Remote containers: Reopen in container で開くとコンテナは起動しているが、Mysqlが動作していない。

原因と解決策

プロジェクトのrootディレクトリにdocker-compose.ymlが存在する状態で、
Remote containers: Reopen in containerを実行すると、既存のdocker-compose.ymlを読み込む、設定が、.devcontainer/に作成され、Docker-compose upが実行されます。

VSCodeが自動的に作成する、.devcontainer/docker-compose.yml
のcommand:の行が悪影響してMysqlが起動していませんでした。
command: の行をコメントアウトすると解決します。
なにか意味があって、command:の行を生成しているのだろうけど、必要性が全く不明。

version: '3'
services:
  # Update this to the name of the service you want to work with in your docker-compose.yml file
  db:
    # 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

    # Overrides default command so things don't shut down after the process ends.
    command: /bin/sh -c "while sleep 1000; do :; done"

ひとりごと

Remote containers使っているほかの人の記事では特に問題になってないのに、なぜ??
解決するのに半日かかりました。
いろいろ調査している過程で、Remote containersの理解が深まりました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1