uwsgi-nginx in docker not works





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I have Dockerfile like:



FROM python:3.6.5-jessie
MAINTAINER twitter myname

RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y nginx
RUN pip install --upgrade pip

RUN git clone https://github.com/hongmingu/requirements
RUN pip install -r /requirements/requirements_django.txt
RUN apt-get install -y vim

RUN mkdir -p /uwsgi_log

RUN git clone https://github.com/hongmingu/smaple_django

RUN apt-get install -y nginx

COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./uwsgi.ini /uwsgi.ini # it runs in daemonized mode
# These files are just setting files. nginx get request at port 8000 and uwsgi runs django project.

RUN uwsgi --ini /uwsgi.ini

RUN service nginx restart

CMD ["python3"]


I think these 2 lines not work:



RUN uwsgi --ini /uwsgi.ini
RUN service nginx restart


Because When I build it and run it with linux command: sudo docker run --rm -it -p 8080:8000 hongmingu/smaple:0.1 /bin/bash my 127.0.0.1:8080 does not work. But, When I attach container and type command manually like, uwsgi --ini /uwsgi.ini and service nginx restart, It works well.



So, Is it impossible to run uwsgi, nginx in Dockerfile?



I want to do it so that I hope I don't need to run uwsgi and nginx manually.



Where did I make fault? Is there any good way to do this?



This docker image(hongmingu/smaple:0.1) is here: https://cloud.docker.com/u/hongmingu/repository/docker/hongmingu/smaple










share|improve this question


















  • 1





    You should broadly assume that commands like service don’t run in Docker. It certainly makes no sense to attempt to restart a service in a Dockerfile since a Docker image doesn’t contain any running processes, only filesystem content. Consider breaking this into two separate images, one process each.

    – David Maze
    Jan 3 at 14:37


















0















I have Dockerfile like:



FROM python:3.6.5-jessie
MAINTAINER twitter myname

RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y nginx
RUN pip install --upgrade pip

RUN git clone https://github.com/hongmingu/requirements
RUN pip install -r /requirements/requirements_django.txt
RUN apt-get install -y vim

RUN mkdir -p /uwsgi_log

RUN git clone https://github.com/hongmingu/smaple_django

RUN apt-get install -y nginx

COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./uwsgi.ini /uwsgi.ini # it runs in daemonized mode
# These files are just setting files. nginx get request at port 8000 and uwsgi runs django project.

RUN uwsgi --ini /uwsgi.ini

RUN service nginx restart

CMD ["python3"]


I think these 2 lines not work:



RUN uwsgi --ini /uwsgi.ini
RUN service nginx restart


Because When I build it and run it with linux command: sudo docker run --rm -it -p 8080:8000 hongmingu/smaple:0.1 /bin/bash my 127.0.0.1:8080 does not work. But, When I attach container and type command manually like, uwsgi --ini /uwsgi.ini and service nginx restart, It works well.



So, Is it impossible to run uwsgi, nginx in Dockerfile?



I want to do it so that I hope I don't need to run uwsgi and nginx manually.



Where did I make fault? Is there any good way to do this?



This docker image(hongmingu/smaple:0.1) is here: https://cloud.docker.com/u/hongmingu/repository/docker/hongmingu/smaple










share|improve this question


















  • 1





    You should broadly assume that commands like service don’t run in Docker. It certainly makes no sense to attempt to restart a service in a Dockerfile since a Docker image doesn’t contain any running processes, only filesystem content. Consider breaking this into two separate images, one process each.

    – David Maze
    Jan 3 at 14:37














0












0








0








I have Dockerfile like:



FROM python:3.6.5-jessie
MAINTAINER twitter myname

RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y nginx
RUN pip install --upgrade pip

RUN git clone https://github.com/hongmingu/requirements
RUN pip install -r /requirements/requirements_django.txt
RUN apt-get install -y vim

RUN mkdir -p /uwsgi_log

RUN git clone https://github.com/hongmingu/smaple_django

RUN apt-get install -y nginx

COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./uwsgi.ini /uwsgi.ini # it runs in daemonized mode
# These files are just setting files. nginx get request at port 8000 and uwsgi runs django project.

RUN uwsgi --ini /uwsgi.ini

RUN service nginx restart

CMD ["python3"]


I think these 2 lines not work:



RUN uwsgi --ini /uwsgi.ini
RUN service nginx restart


Because When I build it and run it with linux command: sudo docker run --rm -it -p 8080:8000 hongmingu/smaple:0.1 /bin/bash my 127.0.0.1:8080 does not work. But, When I attach container and type command manually like, uwsgi --ini /uwsgi.ini and service nginx restart, It works well.



So, Is it impossible to run uwsgi, nginx in Dockerfile?



I want to do it so that I hope I don't need to run uwsgi and nginx manually.



Where did I make fault? Is there any good way to do this?



This docker image(hongmingu/smaple:0.1) is here: https://cloud.docker.com/u/hongmingu/repository/docker/hongmingu/smaple










share|improve this question














I have Dockerfile like:



FROM python:3.6.5-jessie
MAINTAINER twitter myname

RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y nginx
RUN pip install --upgrade pip

RUN git clone https://github.com/hongmingu/requirements
RUN pip install -r /requirements/requirements_django.txt
RUN apt-get install -y vim

RUN mkdir -p /uwsgi_log

RUN git clone https://github.com/hongmingu/smaple_django

RUN apt-get install -y nginx

COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./uwsgi.ini /uwsgi.ini # it runs in daemonized mode
# These files are just setting files. nginx get request at port 8000 and uwsgi runs django project.

RUN uwsgi --ini /uwsgi.ini

RUN service nginx restart

CMD ["python3"]


I think these 2 lines not work:



RUN uwsgi --ini /uwsgi.ini
RUN service nginx restart


Because When I build it and run it with linux command: sudo docker run --rm -it -p 8080:8000 hongmingu/smaple:0.1 /bin/bash my 127.0.0.1:8080 does not work. But, When I attach container and type command manually like, uwsgi --ini /uwsgi.ini and service nginx restart, It works well.



So, Is it impossible to run uwsgi, nginx in Dockerfile?



I want to do it so that I hope I don't need to run uwsgi and nginx manually.



Where did I make fault? Is there any good way to do this?



This docker image(hongmingu/smaple:0.1) is here: https://cloud.docker.com/u/hongmingu/repository/docker/hongmingu/smaple







docker nginx uwsgi






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 3 at 14:22









touchingtwisttouchingtwist

587621




587621








  • 1





    You should broadly assume that commands like service don’t run in Docker. It certainly makes no sense to attempt to restart a service in a Dockerfile since a Docker image doesn’t contain any running processes, only filesystem content. Consider breaking this into two separate images, one process each.

    – David Maze
    Jan 3 at 14:37














  • 1





    You should broadly assume that commands like service don’t run in Docker. It certainly makes no sense to attempt to restart a service in a Dockerfile since a Docker image doesn’t contain any running processes, only filesystem content. Consider breaking this into two separate images, one process each.

    – David Maze
    Jan 3 at 14:37








1




1





You should broadly assume that commands like service don’t run in Docker. It certainly makes no sense to attempt to restart a service in a Dockerfile since a Docker image doesn’t contain any running processes, only filesystem content. Consider breaking this into two separate images, one process each.

– David Maze
Jan 3 at 14:37





You should broadly assume that commands like service don’t run in Docker. It certainly makes no sense to attempt to restart a service in a Dockerfile since a Docker image doesn’t contain any running processes, only filesystem content. Consider breaking this into two separate images, one process each.

– David Maze
Jan 3 at 14:37












1 Answer
1






active

oldest

votes


















1














You misunderstood the RUN instruction




The RUN instruction will execute any commands in a new layer on top of
the current image and commit the results




It's used to build your image, it is not docker run which executes the command in the container.



The solutions involves to execute those 2 lines in the CMD or ENTRYPOINT with a shell script. uwsgi has also to be daemonized. Checkout this image https://github.com/tiangolo/uwsgi-nginx-docker






share|improve this answer
























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54024182%2fuwsgi-nginx-in-docker-not-works%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    You misunderstood the RUN instruction




    The RUN instruction will execute any commands in a new layer on top of
    the current image and commit the results




    It's used to build your image, it is not docker run which executes the command in the container.



    The solutions involves to execute those 2 lines in the CMD or ENTRYPOINT with a shell script. uwsgi has also to be daemonized. Checkout this image https://github.com/tiangolo/uwsgi-nginx-docker






    share|improve this answer




























      1














      You misunderstood the RUN instruction




      The RUN instruction will execute any commands in a new layer on top of
      the current image and commit the results




      It's used to build your image, it is not docker run which executes the command in the container.



      The solutions involves to execute those 2 lines in the CMD or ENTRYPOINT with a shell script. uwsgi has also to be daemonized. Checkout this image https://github.com/tiangolo/uwsgi-nginx-docker






      share|improve this answer


























        1












        1








        1







        You misunderstood the RUN instruction




        The RUN instruction will execute any commands in a new layer on top of
        the current image and commit the results




        It's used to build your image, it is not docker run which executes the command in the container.



        The solutions involves to execute those 2 lines in the CMD or ENTRYPOINT with a shell script. uwsgi has also to be daemonized. Checkout this image https://github.com/tiangolo/uwsgi-nginx-docker






        share|improve this answer













        You misunderstood the RUN instruction




        The RUN instruction will execute any commands in a new layer on top of
        the current image and commit the results




        It's used to build your image, it is not docker run which executes the command in the container.



        The solutions involves to execute those 2 lines in the CMD or ENTRYPOINT with a shell script. uwsgi has also to be daemonized. Checkout this image https://github.com/tiangolo/uwsgi-nginx-docker







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 3 at 14:42









        SiyuSiyu

        3,30211231




        3,30211231
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54024182%2fuwsgi-nginx-in-docker-not-works%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            How to fix TextFormField cause rebuild widget in Flutter

            Npm cannot find a required file even through it is in the searched directory