我是新来的码头工人,所以很抱歉我缺乏知识。
我正在创建的Docker用于Python项目。我还用芹菜,RabbitMQ和MySQL。为此,我创建了一个Dockerfile:
# A dockerfile must always start by importing the base image.
FROM ubuntu:20.04
# Identify myself as the maintainer:
LABEL maintainer="blah-blah@blah.com"
# Set Timezone
ENV TZ=Europe/London
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Add the "all Python versions" repo:
RUN apt-get update && apt-get install -y software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get -y install python3.8
RUN apt-get -y install python3-pip
RUN apt-get autoremove -y
RUN python3 -m pip install --upgrade pip
RUN pip install setuptools==58
# Create a folder for the Match requirements file:
RUN mkdir /install
WORKDIR /install
# Copy the requirements file:
COPY reqs.txt /install
# Install the requirements using PIP
RUN pip3 install --no-deps -r reqs.txt
# Installing MySQL Server
RUN apt-get -y install mysql-server
# Install RabbitMQ
COPY rabbit-mq-install.sh /install
RUN chmod +x rabbit-mq-install.sh
RUN sh rabbit-mq-install.sh
# Expose the port 8888 for Django Server and expose 3306 for MySQL
EXPOSE 8888
EXPOSE 3306
# Running services@
CMD service mysql start && /etc/init.d/rabbitmq-server start
# Setting Bash as the entry
ENTRYPOINT /bin/bash然后,我使用以下方法构建映像:
docker build -t [MYNAME] .并尝试使用以下方法启动容器:
docker run -i -t [MYNAME]我可以看到这会创建一个新的容器,但是它不会继续运行。
我还在Mac上使用了Docker桌面应用程序,这意味着我可以运行实例,但我已经安装和尝试启动的服务没有运行。
感谢你的帮助和建议!
//编辑,因为我需要在图像名之前使用-it。
发布于 2022-04-27 12:40:17
谢谢,虽然这实际上是正确地将我放入shell中,但我仍然没有看到我的服务正在运行。-
当您在命令行上传递参数时(如/bin/bash),您将覆盖Dockerfile中的CMD设置。如果您希望容器中有一个shell,并且希望您的服务启动,那么您可以在不提供任何附加参数的情况下对映像进行docker run,然后使用docker exec在运行的容器中启动一个shell .
...but --这并不能解决您的问题,因为您试图使用service命令与init或systemd这样的服务管理器进行交互,并且容器中没有一个在运行。在容器中运行的唯一进程是那些通过ENTRYPOINT或CMD条目显式启动的进程。
对于你正在做的事情--从mysql和rabbitmq开始--一个更好的解决方案是将官方图像用于这些工具:
例如,如果要为运行mysql设计自己的映像,则CMD条目如下所示:
CMD ["mysqld"]https://stackoverflow.com/questions/72028648
复制相似问题