I see discipline as an overall approach. Set clear boundaries and stick to them. Communicate the consequences as well. Talk to him respectfully, let him know what you are doing and why you are doing it. Keep your own control (no shouting, hitting, etc.), and be persistent using positive/negative reinforcement for his behavior.
Let him get lots of exercise and give him a lot of activities to do, just focused when indoors (one at a time). Play with him a lot. Most of the time when kids act up it's because they need an outlet or they need your attention.
For bedtime, establish a routine and put him to bed. If he gets up keep putting him to bed. Don't run in every time he cries/complains just check on him occasionally to let him know it's time for sleep. Don't let kids bait you into arguing, you're the boss.
As for food, let him sit with you at dinner and offer a variety. Invite him to try things. Praise him if he does (whether he likes it or not). If he doesn't want something, don't make a big deal of it. If he gets attention for trying things/eating but none for not eating something, he'll become more cooperative in time. His tastes may change.