Docker 镜像可与 docker run 配合使用,但不能与 docker-compose 配合使用

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

嗨,我遇到了 docker 镜像的问题

这是后端的 Dockerfile

FROM ubuntu:18.04

# Install required packages
RUN apt-get update && apt-get install -y \
    nano \
    python3 \
    python3-pip \
    python3-dev \
    default-libmysqlclient-dev \
    build-essential \
    git \
    python3-venv \
    mysql-client

RUN apt-get update \
    && apt-get install -y python3.6-dev \
    && apt-get install -y mysql-client \
    && apt-get install -y libmysqlclient-dev \
    && apt-get install -y libssl-dev

# Clone the git repository
RUN git clone https://github.com/peyyala7hills/new_chatapp /app

WORKDIR /app

# Copy settings.py to the appropriate location
RUN rm /app/fundoo/fundoo/settings.py
COPY settings.py /app/fundoo/fundoo/

# Set up Python virtual environment and install dependencies
RUN python3 -m venv venv
RUN . venv/bin/activate && pip3 install -r requirements.txt
RUN cd ./fundoo && pip3 install python-dotenv

# Create systemd service file
RUN echo '[Unit]\n\
Description=Chatapp Service\n\
After=network.target\n\
\n\
[Service]\n\
User=ubuntu\n\
Group=ubuntu\n\
WorkingDirectory=/app/fundoo\n\
ExecStart=/bin/bash -c "cd /app && source venv/bin/activate && cd /app/fundoo && /app/venv/bin/gunicorn --workers 3 --bind 0.0.0.0:8000 fundoo.wsgi:application"\n\
\n\
[Install]\n\
WantedBy=multi-user.target' > /etc/systemd/system/chatapp.service

# Expose port 8000
EXPOSE 8000

# Start gunicorn server
CMD ["/bin/bash", "-c", "cd /app/fundoo && /app/venv/bin/gunicorn --workers 3 --bind 0.0.0.0:8000 fundoo.wsgi:application"]

docker-compose.yml 文件


version: '3.9'

services:

  database:
    image: database:v1
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: chatapp
      MYSQL_USER: chatapp
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - volumedb:/etc/mysql
      - volumedb_data:/var/lib/mysql
    networks:
      - rajcharanmaster

  backend:
    image: backend:v3
    ports:
      - "8000:8000"
    volumes:
      - backdata:/etc
      - backdata_config:/app
    networks:
      - rajcharanmaster

  frontend:
    image: frontend:v2
    ports:
      - "80:80"
    depends_on:
      - backend
    volumes:
      - frontdata:/etc
    networks:
      - rajcharanmaster
    environment:
      BACKEND_HOST: backend
      DATABASE_HOST: database

networks:
  rajcharanmaster:
    driver: bridge

volumes:
  backdata:
  backdata_config:
  frontdata:
  volumedb:
  volumedb_data:

当我使用上面的 dockerfile 构建映像时,它运行良好,但是当我尝试 docker-compose.yml 时,它运行不正常,我不知道为什么

谁能帮我解释一下吗

我期望 docker-compose run -d 必须工作并为前端、后端、数据库启动 3 个实例,但数据库和前端工作正常

仅后端出现问题

我在 dockerfile 中遇到 mysqlclient 问题,但在镜像或运行中它运行良好

docker docker-compose dockerfile
1个回答
0
投票

能否请您粘贴一个错误。我怀疑可能是环境问题。 检查您是否通过环境变量将数据库端点传递到后端应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.